此问题基于this question和this issue
The definition of variable依赖于术语对象声明,但这在任何地方都没有明确定义。是否与object declaration同义(因此仅适用于以 simple-declaration 引入的声明),从而使函数参数声明不是 variables ,或者还有吗?
答案 0 :(得分:4)
该段落定义了声明( [basic.5] ):
表示实体的每个名称都由声明引入。
即。 声明是引入名称表示实体的东西。
对象的声明因此引入了名称,它表示对象。
例如。 :
int a; // a declaration of an object with name "a" -> a variable
参数的定义可以在 [defns.parameter] 中找到:
符合变量( [basic.6] )定义的作为函数声明或定义的一部分或在异常处理程序的catch子句中声明的对象或引用,该对象或引用在进入函数或处理程序时获取值
:
变量 是通过声明非静态数据成员或对象以外的引用来引入的。
例如。
void foo(int a); // the parameter is a declaration of an object with name "a" -> a variable