引用c ++中的引用

Dae*_*mon 7 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;
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.名称refvar可以互换使用以指代相同的对象.因此,当您这样做时int& r_ref = ref;,您不会引用引用,但是您再次引用该同一个对象.

  • @Guarav是的,当您执行&ref时,实际上是在获取它所引用的对象的地址。您不能使用引用本身的地址。实际上,尚不确定引用本身在内存中是否存在。 (3认同)

And*_*owl 7

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

发生的事情是您正在创建对引用r_ref的对象的另一个引用ref,即var.所以你最终会得到两个引用var:refr_ref.

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

这句话的含义是什么:

您无法引用其他参考

是不是您不能将引用本身视为可以进一步别名的实体:引用是对象的别名,而对引用执行的任何操作(包括引用边界!)都是在引用的对象上完成的.