基本上它是
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"; }
我的问题是我无法理解它是如何优化的,也是为什么基类允许零大小?
解决方法
基类的大小不能为零.只有基类子对象才可以.表示派生对象的基础部分.