New*_*ent 6 c++ language-lawyer
C++ 14 intro.cpp状态:
a most derived object shall have a non-zero size and shall occupy one or more bytes of storage
Run Code Online (Sandbox Code Playgroud)
他们为什么要说
非零尺寸
和
一个或多个存储字节
什么时候可以有一个而不是另一个?
这两个部分实际上说的是不同的事情。
最派生的对象应具有非零大小
这意味着sizeof使用对象将返回非零大小。
最派生的对象...应占用一个或多个字节的存储空间
这意味着该对象占用了一些字节(一个或多个)内存。
如果第二条语句不存在,则可能意味着将sizeof报告非零大小,但该对象实际上可能不会使用任何内存。
如果没有第一个语句,则可能意味着sizeof可以返回零,但该对象仍会占用内存空间。
两者都是必需的并且彼此正交。