【发布时间】:2011-01-22 15:45:03
【问题描述】:
为什么下面会输出1?
#include <iostream>
class Test
{
};
int main()
{
std::cout << sizeof(Test);
return 0;
}
【问题讨论】:
-
有一个虚拟占位符成员,其大小恰好是一个字节。因为对于 Test[10] 的数组,每个对象都应该有一个唯一的地址。
-
一个有趣的优化是
Empty Base Optimization,这意味着如果你从一个空的基类(没有属性,没有虚拟方法)继承,那么你的类大小不会增长。有许多(其他)条件,但它解释了为什么在某些情况下从谓词私下继承。