问题 可以任何人解释这种差异


n3035说:(2010-02-16)

变量由对象的声明引入。变量的       name表示对象。

n3090说:(2010-03-29)

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

n3242说:(2011-02-28)

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

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

这是ISO标准C ++的声明

我看到了这个链接:

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

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


3084
2018-03-22 05:56


起源

n3090和n3242之间有什么区别吗?你为什么要列出中间最老的(n3035)? - fredoverflow
重新安排,以便他们按发布日期排序。 - Martin York
对不起,您忘了列出n3035! - Johannes Schaub - litb


答案:


考虑:

int x = 42;
int& rx = x;

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


7
2018-03-22 07:12





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

还可以看看 n2993 处理 core issue# 633 即 “适用于参考文献的变量规范”

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


6
2018-03-22 06:08



愉快解释程序方面的差异....否则解释声明n3242 ...编程方式.... - 1User