根据标准,什么是“对象声明”

时间:2019-08-30 06:39:06

标签: c++ language-lawyer

此问题基于this questionthis issue

The definition of variable依赖于术语对象声明,但这在任何地方都没有明确定义。是否与object declaration同义(因此仅适用于以 simple-declaration 引入的声明),从而使函数参数声明不是 variables ,或者还有吗?

1 个答案:

答案 0 :(得分:4)

该段落定义了声明 [basic.5] ):

  

表示实体的每个名称都由声明引入。

即。 声明是引入名称表示实体的东西。

对象的声明因此引入了名称,它表示对象

例如。 :

int a; // a declaration of an object with name "a" -> a variable


参数的定义可以在 [defns.parameter] 中找到:

  

作为函数声明或定义的一部分或在异常处理程序的catch子句中声明的对象或引用,该对象或引用在进入函数或处理程序时获取值

符合变量 [basic.6] )定义的

  

变量 是通过声明非静态数据成员或对象以外的引用来引入的。

例如。

void foo(int a); // the parameter is a declaration of an object with name "a" -> a variable