我知道空类的大小由标准定义为非零。在大多数实现中,通常 1个字节 但是,C ++标准是否指定了对象的最小可能大小?假设按照标准,空类对象的大小至少 1个字节是合乎逻辑的。
答案 0 :(得分:8)
对象的最小大小为零(§1.8/ 5)。但是,完整对象的大小必须始终为非零,并且该大小必须至少为一。
除非它是位字段(9.6),否则最派生的对象应具有 非零大小,应占用一个或多个字节的存储空间。基础 class子对象可能没有大小。一个可以轻易复制的对象 或标准布局类型(3.9)应占用连续的字节 存储
由于所谓的EBCO,空基类优化,空类型的基类子对象的大小可以为零。