[basic] 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
这是否意味着变量是对象或引用(不是非静态成员)?在整个标准中,它们被称为具有对象/引用的属性,但是形式上的定义似乎没有说明。令我困惑的是,变量名称是指对象或引用,而不是变量本身。
例如,[basic.life] p1必须说:
如果变量是默认初始化且[...]
,则该变量被称为具有空虚初始化
这暗示着变量具有与对象和引用相同的属性,因为它们可以被初始化。
所以我的问题是:
变量是否只是一种语法构造,旨在将声明中引入的对象和引用归为一个术语?变量本身是对象还是引用?