C ++引用变量说明

时间:2010-06-07 11:19:06

标签: 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;
}

我在这里将变量ref引用到ij变量。 代码工作得很好。

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

感谢您事先提出的​​意见。

3 个答案:

答案 0 :(得分:11)

您没有将ref绑定到另一个对象:当您执行ref = k时,就好像您执行了i = k一样,只需重新分配 的值> i。换句话说,您正在调用i的{​​{1}}。

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

operator=

答案 1 :(得分:5)

ref = k行未更改ref所指的内容,而是将k的值指定为ref的值。如果您随后打印i,您会发现i现在也是2000。

答案 2 :(得分:2)

#include <iostream>

int main()
{
    int i = 100;
    int& ref = i;
    int k = 2000;
    ref = k;

    if (&ref == &i) std::cout << "ref is bound to i\n";
    if (&ref == &k) std::cout << "ref is bound to k\n";
}
相关问题