文字对象是否符合标准术语?

时间:2015-03-01 15:51:01

标签: c++ object literals

标准定义:

  

对象是存储区域。 [注意:一个函数不是一个对象,   无论它是否以某种方式占据存储空间   对象呢。 -end note]一个对象是由定义(3.1)创建的   新的表达式(5.3.4)或需要时的实现(12.2)。

(12.2是关于临时对象)

文字肯定占据了存储区域。我不确定报价的最后一句是成为一个对象的必要条件。文字既不是由定义创建的,也不是由new-expression创建的,但除了字符串文字之外的所有文字都是临时对象,对吧?这导致了一个奇怪的结论,即字符串文字不是对象,而所有其他文字都是对象。这感觉不对。

1 个答案:

答案 0 :(得分:4)

除了字符串文字之外,无法保证文字占用存储空间。小文字可以直接包含在具有直接操作数的机器指令中,或者甚至(通常情况下为0)计算或永久存在于机器寄存器中。

如果需要创建临时,则应用“按需实施”这一短语。

对于字符串文字,§2.13.5说(¶16):“评估字符串文字导致字符串文字对象具有静态存储持续时间......”。也许应该在OP中引用的列表中添加对该部分的引用。