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,同由什么占去的,为什么?
}
{
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.
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