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

前端之家收集整理的这篇文章主要介绍了c – 为什么基类的大小为零?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本上它是 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.

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

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

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

解决方法

基类的大小不能为零.只有基类子对象才可以.表示派生对象的基础部分.
原文链接:https://www.f2er.com/c/112028.html

猜你在找的C&C++相关文章