在visual C++ 6.0中测试如下代码: #include "iostream" class X {}; int main() return 0; 得出的结果也许会令你毫无头绪 sizeof(X): 1 下面一一阐释原因: (1)对于一个class X这样的空的class,由于需要使得这个class的两个objects得以在内存中配置独一无二的地址,故编译器会在其中安插进一个char.因而class X的大小为1. (2)由于class Y虚拟继承于class X,而在derived class中,会包含指向visual base class subobject的指针(4 bytes),而由于需要区分这个class的不同对象,因而virtual base class X subobject的1 bytes也出现在class Y中(1 bytes),此外由于Alignment的限制,class Y必须填补3bytes(3 bytes),这样一来,class Y的大小为8. !--判断阅读权限-->!--判断是否已经扣点--> |
