可能重复:
对象的大小与虚拟
难道虚拟继承改变派生类的大小? 我执行以下的代码,其中我有两个派生类一个虚拟继承和几乎继承了其它非:
class A {
public:
int a;
virtual void a1();
};
class non_vir_der: public A{
public:
int c;
virtual void aa();
};
class vir_der: public virtual A{
public:
int d;
virtual void bb();
};
int main()
{
cout<<sizeof(non_vir_der)<<"\n";
cout<<sizeof(vir_der)<<"\n";
return 0;
}
输出:
12(底面4(INT A)+ 4(INT C)+ 4(一个PTR))
16(附加的4?)
再次检查,如果我错过了一些东西,我想所需的最少代码,删除所有整数中的类和输出是:
4
4
第二输出指示两个派生类是相同的尺寸。 为什么vir_der 16在第一次运行时的大小,为什么不是12?