【问题标题】:can any one explain the difference谁能解释一下区别
【发布时间】:2011-03-22 05:56:47
【问题描述】:

n3035 说:(2010-02-16)

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

n3090 说:(2010-03-29)

一个变量是由一个引用的声明而不是一个引用引入的 非静态数据成员或对象。变量名表示 引用或对象。

n3242 说:(2011-02-28)

一个变量是由一个引用的声明而不是一个引用引入的 非静态数据成员或对象。变量名表示 引用或对象。

任何人都可以在程序的帮助下解释术语(或)的区别(正如它所说的那样)

这是来自 ISO 标准 C++ 的声明

我看到了这个链接:

Why was the definition of a variable changed during the development of C++11?

但这不是(完整的)我的问题......

【问题讨论】:

  • n3090和n3242有区别吗?为什么要在中间列出最旧的 (n3035)?
  • 重新排列,使其与发布日期保持一致。
  • 抱歉,您忘记列出 n3035!

标签: c++ c++11


【解决方案1】:

考虑:

int x = 42;
int& rx = x;

x 是一个变量; rx 也应该被视为变量吗?许多标准关于非参考变量的要求也适用于参考。在整个标准中不断规定“变量或对变量的引用”显然是一件痛苦的事,所以如果变量的定义可以包括引用——也许偶尔会有“引用除外”,那么标准可能——总的来说——简化。在我看来,修订版正在探索这种平衡。

【讨论】:

    【解决方案2】:

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

    还可以查看处理core issue# 633n2993,即 “也应适用于引用的变量规范”

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

    【讨论】:

    • 请解释一下程序方面的区别......否则用编程方式解释语句n3242......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 2017-04-07
    • 2015-12-21
    • 2015-11-23
    • 2013-05-23
    • 2017-07-23
    相关资源
    最近更新 更多