【发布时间】:2011-08-07 16:31:01
【问题描述】:
我对 C++ 中 const 引用的概念存有疑问。
int i =10;
const int &j = i;
cout<<"i="<<i<<" j:"<<j; // prints i:10 j:10
i = 20;
cout<<"i="<<i<<" j:"<<j; // prints i:20 j:10
为什么第二个j 语句不打印新值,即20。
如果对任何变量的引用表示两者之间的紧密联系,这怎么可能。
【问题讨论】:
-
在 gcc 4.5.2 上打印 20 20,你使用的是什么编译器?
-
那是错误的。 ideone.com/IATb1你用的是什么编译器。
-
你用什么编译器来测试这段代码?这不应该是正确的,而且正如预期的那样,我无法使用 Visual Studio 2008 重现它。
-
它是唯一的代码还是你把它从更大的上下文中删掉了?如果是这样:是不是在更大的上下文中,您的变量之一被局部变量遮蔽了?
-
我无法想象有一个编译器会犯如此微不足道的错误。