任何人都可以解释这种差异

1Us*_*ser 11 c++ c++11

n3035说:(2010-02-16)

变量由对象的声明引入.变量的名称表示对象.

n3090说:(2010-03-29)

通过声明除非静态数据成员或对象之外的引用引入变量.变量的名称表示引用或对象.

n3242说:(2011-02-28)

通过声明除非静态数据成员或对象之外的引用引入变量.变量的名称表示引用或对象.

任何人都可以在一个程序的帮助下解释这些差异(或者说是什么)

这是ISO标准C++的声明

我看到了这个链接:

为什么在C++ 11的开发过程中变量的定义发生了变化?

但这不是(完全意义)我的问题......

Ton*_*roy 7

考虑:

int x = 42;
int& rx = x;
Run Code Online (Sandbox Code Playgroud)

x是一个变量; rx还应该被视为一个变量?许多标准关于非参考变量的要求也适用于参考文献.在整个标准中不得不经常规定"变量或引用变量"显然是一种痛苦,所以如果变量的定义可以包括引用 - 也许偶尔会出现"除引用之外",那么标准可能是 - 总的来说 - 简化.在我看来,修改正在探索这种平衡.


Pra*_*rav 6

这是一个 CWG defect #633 in ISO C++03

另请查看n2993处理core issue# 633"适用于参考的变量规范"

这些更改的目标是扩展"变量"的含义,以包含命名对象和引用,并在可行的情况下始终如一地应用该术语.

  • 很容易解释程序方面的差异....否则在编程方式解释声明n3242 ...... (2认同)