C++引用变量说明

kum*_*ran 1 c++ variables reference

我想大多数人会再次对这个话题感到惊讶,但我指的是一本由"Stephen C. Dewhurst"编写的书"C++ Common Knowledge:Essential Intermediate Programming".

在书中,他引用了一个特定的句子(在第5项中的部分,参考文献是别名,不是指针),如下所示

引用是在引用初始化之前已存在的对象的别名.初始化引用以引用特定对象后,以后不能引用其他对象 ; 引用在其整个生命周期中绑定到其初始化程序

任何人都可以解释"以后不能被引用到不同的对象"的上下文

下面的代码对我有用,

#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
 int i = 100;
 int& ref = i;
 cout<<ref<<endl;

 int k = 2000;
 ref = k;
 cout<<ref<<endl;

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这里我指的变量refij变量.代码工作得非常好.

我错过了什么吗?我使用SUSE10 64位linux来测试我的示例程序.

感谢您提前输入.

Mar*_*off 11

你没有绑定ref到另一个对象:当你这样做时ref = k,就像你做的那样i = k,只是重新分配的值i.换句话说,你打电话ioperator=.

这里有更好地展示这个想法的东西:

#include <iostream>

int main()
{
    std::ostream& stream = std::cout;
    stream = std::cerr; // fails to compile!  Cannot access ostream::operator=
    return 0;
}
Run Code Online (Sandbox Code Playgroud)


Tom*_*Tom 5

该行ref = k并没有改变什么ref所指的是,它被赋予的价值k,它的值ref.如果您随后打印,i您会发现i现在也是2000.