标准说
A variable is introduced by the declaration of an object. The variable's name denotes the object.
但是这个定义实际上意味着什么?
变量是否为对象命名,即变量只是匿名对象的命名机制吗?或者变量就是名称本身?
或者变量是一个命名对象,因为每个变量也是一个对象?
或者变量只是一个“代理”,其名称将所有操作“委托(delegate)”给真实对象?
更令人困惑的是,许多 C++ 书籍似乎将变量和对象视为同义词。
您对此有何看法?
<小时/>关于实体,引用自C++0x草案:
An entity is a value, object, reference, function [...]
Every name that denotes an entity is introduced by a declaration.
A variable is introduced by the declaration of an object
从这些陈述中我得出结论:变量是一个名称,因此不能是一个对象。这真的让我很困惑:)
最佳答案
变量是命名对象。以下创建不是变量的对象
new int // create one int object
std::string() // create one string object
下面创建了一个名为“foo”的数组变量和 5 个类型为“int”的未命名(子)对象
int foo[5];
下面的不是C++03中的变量,而是has become a variable在C++0x中(声明的引用是C++0x中的变量,详细信息请参见链接)
extern int &r;
<小时/>
变量是否为对象提供名称,即变量是否只是匿名对象的命名机制?
变量是对象(或分别是引用)。 C++的实体列表(C++03中的3/3
)包含多个这样的 is-a关系。例如,子对象是对象,数组元素是对象,类成员是对象或函数或类型或模板或枚举器。
C++0x 的实体列表对我来说看起来更干净一些,它不包含“变量”、“函数实例”(这种实体对我来说到底是什么),不再是“子对象”和“数组元素”。相反,它添加了“模板特化”,即函数、类或模板(部分特化)。
1.8
的 C++ 对象模型表示
An object can have a name (clause 3).
因此,如果您愿意,您可以将语句表述为“对象的名称表示该对象。”。
关于c++ - C++ 中的变量到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59516502/