C 14 intro.cpp国家:
a most derived object shall have a non-zero size and shall occupy one or more bytes of storage
他们为什么要说
non-zero size
和
one or more bytes of storage
什么时候可以有一个而不是另一个?
解决方法
这两部分实际上是在说不同的东西.
a most derived object shall have a non-zero size
这意味着使用对象的sizeof将返回非零大小.
a most derived object … shall occupy one or more bytes of storage
这意味着该对象占用了一些字节(一个或多个)的内存.
如果第二个语句不存在,则可能意味着sizeof将报告非零大小,但该对象可能实际上不使用任何内存.
如果没有第一个语句,它可能意味着sizeof可能返回零,但对象仍将占用内存空间.
两者都是需要的并且彼此正交.