我正在阅读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;
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
var:11 ref:11 r_ref:11
Run Code Online (Sandbox Code Playgroud)
Jos*_*eld 12
措辞有些令人困惑.他们的意思是你不能有一个int& &类型(请注意,有一个类似的东西int&&,但这是一种不同类型的引用).
在您的代码中,引用ref是指由表示的对象var.名称ref和var可以互换使用以指代相同的对象.因此,当您这样做时int& r_ref = ref;,您不会引用引用,但是您再次引用该同一个对象.
那么在这种情况下发生了什么:
发生的事情是您正在创建对引用r_ref的对象的另一个引用ref,即var.所以你最终会得到两个引用var:ref和r_ref.
请记住,引用只是一个别名:在它绑定到一个对象之后(它必须在初始化时绑定到某个对象,并且以后不能重新绑定),你在引用上所做的一切都完成了在被引用的对象上,好像引用只是一个替代名称.
这句话的含义是什么:
您无法引用其他参考
是不是您不能将引用本身视为可以进一步别名的实体:引用是对象的别名,而对引用执行的任何操作(包括引用边界!)都是在引用的对象上完成的.