是否引用了C++中的非法引用?

gua*_*zhi 4 c++ reference

int main(){
int ival=1024;
int &refVal=ival;
int &refVal2=refVal;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

C++ Primer(第5版)说"因为引用不是对象,我们可能没有定义对引用的引用."(中文第5版说"不能定义引用的引用".意思不能定义对引用的引用.)

但我得到了上面的代码通过编译.

这是怎么回事?

随意纠正任何错误(包括我的英语技能)

R S*_*ahu 9

“因为引用不是对象,所以我们不能定义对引用的引用。”

也许他们的意思是:

int i = 10;
int& ref1 = i;
int&& ref2 = ref1; // Not allowed.
Run Code Online (Sandbox Code Playgroud)

当然,在C++11中,符号&&用于定义右值引用。

我认为比较引用和指针来理解为什么对引用的引用没有意义更能说明问题。

在此输入图像描述


Bri*_*ian 9

refVal初始化之后,每当你提到它的名字时,它的行为就像ival它所引用的变量---它的"参考性"不再被检测到(除了decltype).因此refVal2,简单地初始化也参考ival.

没有类型"引用参考int",int&(&).