繁体   English   中英

C ++变量的定义,Basic / 6节

[英]Definition of a C++ variable, section Basic/6

[基础] p6表示:

通过声明除非静态数据成员或对象之外的引用引入变量。 变量的名称(如果有)表示引用或对象。

int a = 0; // declaration of an object, this introduces the variable x, and an object is created
int{0}; // not a declaration of a variable, this does not introduce a variable, but an object is created

这是否意味着变量IS是对象或引用(不是非静态成员)? 在整个标准中,它们被称为具有对象/引用的属性,但正式定义似乎并未表明这一点。 令我困惑的是,变量名称是指对象或引用,而不是变量本身。

例如,这是[basic.life] p1必须说的:

如果一个变量被默认初始化并且[...]被认为具有空的初始化。

这暗示了具有与对象和引用相同属性的变量,因为它们可以初始化。

所以我的问题是:

变量只是一个句法结构,意味着将声明引入的对象和引用分组到一个术语中吗? 变量本身是对象还是引用?

正如在Basic / 3中明确指出的那样,变量不是“实体”。 对象和引用是实体,但不是变量。 因此,您可以将变量视为纯粹的语法结构而不是一流的C ++事物。

Basic / 6告诉我们变量名表示该变量声明的对象/引用。 这应该被解读为普通英语:通过变量声明创建的对象/引用具有变量名称。 相反,变量命名通过变量声明创建的对象/引用。

所以当标准说:

如果一个变量是默认初始化的,那么它就被认为具有空的初始化...

它的意思是:

如果它是默认初始化的,那么[变量声明引入的引用/对象]被称为具有空的初始化...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM