引用c ++中的引用

时间:2013-05-10 11:12:39

标签: c++

我正在阅读c ++中的参考概念,我对C ++ Complete Reference中的这个陈述感到困惑。

  

您无法引用其他参考

所以在这种情况下发生了什么:

    int  var = 10;
    int& ref = var;
    int& r_ref = ref;
    r_ref++;
    cout << "var:" << var << "ref:" << ref << "r_ref:" << r_ref << endl;

我得到的输出是:

var:11  ref:11  r_ref:11

3 个答案:

答案 0 :(得分:12)

措辞略显混乱。他们的意思是你不能拥有int& &类型(注意有int&&这样的东西,但这是一种不同类型的引用。)

在您的代码中,引用ref指的是var表示的对象。名称refvar可以互换使用,以指代同一个对象。因此,当您执行int& r_ref = ref;时,您没有引用引用,但是您再次引用该同一个对象。

答案 1 :(得分:7)

  

所以在这种情况下发生了什么:

发生的事情是您正在为r_ref引用的对象创建另一个引用ref,即var。因此,您最终会得到两个对var的引用:refr_ref

请记住,引用只是一个别名:在绑定到一个对象之后(必须在初始化时绑定到某个对象,并且它以后不能重新绑定),你在引用上所做的一切都是在被引用的对象上完成的,就好像 引用只是一个替代名称。

本声明的含义:

  

您无法引用其他参考

你是不是可以将一个引用本身视为可以进一步别名的实体:引用是对象的别名,无论你对引用做什么(包括引用边界!)都是在被引用的对象。

答案 2 :(得分:0)

int var = 10;声明变量var。现在,当您编写int& ref = var;时,会定义对var的引用。您可以将ref视为var的别名。无论您在何处使用ref,都会像您直接使用var一样。

这就是int& r_ref = ref;只定义对var的另一个引用的原因。