C++ 符合标准的最小对象大小(C+)+;?

C++ 符合标准的最小对象大小(C+)+;?,c++,sizeof,C++,Sizeof,我知道标准将空类的大小定义为非零。在大多数实现中通常为1字节。 但是,C++标准是否指定对象的最小可能大小?根据标准,假设空类对象的大小至少为1字节是否合乎逻辑 物体的最小尺寸为零(§1.8/5)。但是,完整对象必须始终具有非零大小,并且该大小必须至少为一 除非是位字段(9.6),否则最派生的对象应具有 非零大小,应占用一个或多个字节的存储空间。基础 类子对象的大小可以为零。容易复制的对象 或标准布局类型(3.9)应占用 储藏室 由于称为EBCO的空基类优化,空类型的基类子对象的大小可以为零。它

我知道标准将空类的大小定义为非零。在大多数实现中通常为1字节。

但是,C++标准是否指定对象的最小可能大小?根据标准,假设空类对象的大小至少为1字节是否合乎逻辑

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

除非是位字段(9.6),否则最派生的对象应具有 非零大小,应占用一个或多个字节的存储空间。基础 类子对象的大小可以为零。容易复制的对象 或标准布局类型(3.9)应占用 储藏室


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

它称为子对象。这算吗?我认为关键是派生最多的对象应该具有非零大小,这意味着任何完整的对象必须至少有1字节宽。因此,如果
subobject
是空类实例,那么
sizeof(object.subobject)
可以为0?@leems:我相信你把“subobject”和“member”混淆了。@Lightness子对象仍然是对象。这个问题并不局限于大多数派生对象。@LightnessRacesinOrbit同一子句,第2段“对象可以包含其他对象,称为子对象。子对象可以是成员子对象(9.2)、基类子对象(第10条)或数组元素。不是任何其他对象的子对象的对象称为完整对象。”