c – 为什么基类的大小为零?

c – 为什么基类的大小为零?,第1张

概述基本上它是 this question的后续.. 当我查看标准文档时,我发现了这个.. 在9.3类中, Complete objects and member subobjects of class type shall have nonzero size.96) … 是的,是的..但是, 96)Base class subobjects are not so constrained. 所以,当我 基本上它是 this question的后续..

当我查看标准文档时,我发现了这个..

在9.3类中,

Complete objects and member subobjects of class type @H_404_8@shall have nonzero size.96)

是的,是的..但是,

96)Base class subobjects are @H_404_8@not so constrained.

所以,当我查看Stroustrup’s FAQ时,有一个例子

voID f(X* p)    {        voID* p1 = p;        voID* p2 = &p->a;        if (p1 == p2) cout << "nice: good optimizer";    }

我的问题是我无法理解它是如何优化的,也是为什么基类允许零大小

解决方法 基类的大小不能为零.只有基类子对象才可以.表示派生对象的基础部分. 总结

以上是内存溢出为你收集整理的c – 为什么基类的大小为零?全部内容,希望文章能够帮你解决c – 为什么基类的大小为零?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1254286.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存