我尝试编写一个程序来测试类的大小,如下所示:
#include<iostream>
using namespace std;
class A
{
public:
long a;
virtual void f()
{
cout<<"A";
}
};
class B: public virtual A
{
public:
void f()
{
cout<<"B";
}
};
int main()
{
cout<<sizeof(B)<<endl; //16
return 0;
}
我知道B类中的每个对象都包含一个long类型变量和两个指向2个vtable的指针(一个用于多态,一个用于虚拟继承,每个指针都是4bytes,因为我使用的是64位CPU)。所以它应该是12个字节,但这个程序的结果是16.有人可以解释一下吗?谢谢大家!