C++标准§1.8中的两个引号:

我认为存储区域的大小不能为零。这意味着某些基类子对象实际上不是对象。这些陈述如何共存?

最佳答案

关于“区域”的定义的哲学争论是不必要的。

1.8/5说:“除非是位字段,否则派生最多的对象的大小应为非零。基类子对象的大小可能为零”。

因此,该标准非常明确,哪些对象(以及哪些“存储区域”)的大小可以为零。如果您不同意标准中“区域”在英语中的含义,那是一回事,您可能会批评作者的(与编程无关的)文学技能。为此,您可以指责他们的诗歌技巧(14.7.3/7),但是很清楚,标准在此对类类型的对象的大小表示了什么。

阅读标准的务实方式是,给一个单词给出两种合理的解释,选择一个与标准同一部分中的另一句话不直接矛盾的解释。不要选择与您更喜欢该词的个人首选用法,甚至是最常用的用法。

07-24 09:46
查看更多