【发布时间】:2014-02-09 17:44:25
【问题描述】:
首先,对不起我的英语。
根据 C++11 标准:
§[basic].3:实体是值、对象、引用、函数、枚举器、类型、类成员、模板、模板特化、命名空间、参数包或 this。
不就是每个值和对象吗?例如,nullptr 标识了 nullptr_t 类型的“值”,但是,由于 nullptr_t 是标量类型,它也是对象类型,因此 nullptr 是对象。
对于this,我有同样的争议:当this 在正确的情况下使用时(在非静态成员函数或数据成员初始化器中)是指针纯右值,因此是标量/对象类型,因此一个对象。
不是吗?
【问题讨论】:
-
this是一个关键字。 评估this产生一个指针纯右值。 -
@KerrekSB 我看过这个问题,但问题的重点不同,并没有解决我的问题。
-
@KerrekSB
nullptr和true也是关键字,不会出现在实体列表中,与this相反。 -
好点。我想
this并不重要,因为它受制于范围和隐藏规则,不像true和nullptr。术语“实体”可能只是用于构建规则的辅助结构。 -
@KerrekSB 我也不明白为什么将值定义为实体,因为我看不出在哪些情况下可以为值定义名称,因为其他时候,所有值是一个对象(或需要创建一个临时对象才能使用它)。因此,您将对象的名称定义为操作值的工具,而不是直接定义值。