2013亚马逊面试题--虚继承的内存模型分析

发表于:2013-1-18 09:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:wangqiulin123456    来源:51Testing软件测试网采编

分享:

  代码四:

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。

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

55/5<12345
春暖花开更文季,点击参与还有惊喜礼品~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号