sizeof的问题

class base
{
public:
base(){};
  ~base(){};
  virtual void f(int){};
  void g2(){};
};

class ba
{
public:

};

void main()
{
cout<<sizeof(base)<<endl;//输出为4,这个4是由什么量占去的,为什么?
cout<<sizeof(ba)<<endl;//输出为1,同由什么占去的,为什么?
}

作者: shengbo0123   发布时间: 2011-06-15

1. vptr, 类中隐藏了一个指针,该指针指向虚函数表
2. 占位,The sizeof operator never yields 0, even for an empty class.

作者: VisualEleven   发布时间: 2011-06-15

虚函数表,一个虚函数有一个函数指针,32位下是4个字节

作者: kyotrue   发布时间: 2011-06-15

vptr 也就是this指针

作者: shenyi0106   发布时间: 2011-06-15

一楼的说的没错!

作者: xuri422   发布时间: 2011-06-15