2

我知道空类的大小由标准定义为非零。在大多数实现中,它通常是1 个字节。
但是,C++ 标准是否指定了对象的最小可能大小?假设按照标准,空类对象的大小至少为1 个字节是否合乎逻辑。

4

1 回答 1

8

对象的最小尺寸为零(§1.8/5)。但是,完整的对象必须始终具有非零大小,并且该大小必须至少为 1。

除非它是位域 (9.6),否则最派生对象应具有非零大小并应占用一个或多个字节的存储空间。基类子对象的大小可能为零。普通可复制或标准布局类型(3.9)的对象应占用连续的存储字节。

由于所谓的 EBCO(空基类优化),空类型的基类子对象的大小可以为零。

于 2013-02-11T12:47:50.843 回答