我正在阅读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
答案 0 :(得分:12)
措辞略显混乱。他们的意思是你不能拥有int& &
类型(注意有int&&
这样的东西,但这是一种不同类型的引用。)
在您的代码中,引用ref
指的是var
表示的对象。名称ref
和var
可以互换使用,以指代同一个对象。因此,当您执行int& r_ref = ref;
时,您没有引用引用,但是您再次引用该同一个对象。
答案 1 :(得分:7)
所以在这种情况下发生了什么:
发生的事情是您正在为r_ref
引用的对象创建另一个引用ref
,即var
。因此,您最终会得到两个对var
的引用:ref
和r_ref
。
请记住,引用只是一个别名:在绑定到一个对象之后(必须在初始化时绑定到某个对象,并且它以后不能重新绑定),你在引用上所做的一切都是在被引用的对象上完成的,就好像 引用只是一个替代名称。
本声明的含义:
您无法引用其他参考
你是不是可以将一个引用本身视为可以进一步别名的实体:引用是对象的别名,无论你对引用做什么(包括引用边界!)都是在被引用的对象。
答案 2 :(得分:0)
int var = 10;
声明变量var
。现在,当您编写int& ref = var;
时,会定义对var
的引用。您可以将ref
视为var
的别名。无论您在何处使用ref
,都会像您直接使用var
一样。
这就是int& r_ref = ref;
只定义对var
的另一个引用的原因。