代码四:


class A
{
};
class B
{
};

class C
{
};
class D
{
};
class E: public virtual A , public virtual B , public virtual C , public virtual D
{
};
void main()
{
 E ee;
 cout<<"sizeof A: "<<sizeof(A)<<endl;
 cout<<"sizeof B: "<<sizeof(B)<<endl;
 cout<<"sizeof C: "<<sizeof(C)<<endl;
 cout<<"sizeof D: "<<sizeof(D)<<endl;
 cout<<"sizeof E: "<<sizeof(E)<<endl;      //
}
 


  输出结果是:

  再看看内存模型吧

  从vbtable来看,里面存储的偏移class E的大小默认固定布局是4bytes,共享布局里面classA、class B和classC的大小是12bytes。所以是16bytes。

  我也是个菜鸟,也只能这么多了,有不对的地方希望指出来,我也改正下。