对c+中引用的引用+; 我正在通过C++中的引用概念,而我对C++完全引用中的语句感到有点困惑。p>

对c+中引用的引用+; 我正在通过C++中的引用概念,而我对C++完全引用中的语句感到有点困惑。p>,c++,C++,您不能引用其他引用 那么,在这种情况下发生了什么: int var = 10; int& ref = var; int& r_ref = ref; r_ref++; cout << "var:" << var << "ref:" << ref << "r_ref:" << r_ref << endl; 措辞有点混乱。他们的意思是你不能有一个int&类型(

您不能引用其他引用

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

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

措辞有点混乱。他们的意思是你不能有一个
int&
类型(注意这里有
int&
,但这是一个不同的引用类型)

在代码中,reference
ref
是指由
var
表示的对象。名称
ref
var
可以互换使用以指代同一对象。所以当你做
int&r\u ref=ref,您没有引用某个引用,但再次引用了同一个对象

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

    int  var = 10;
    int& ref = var;
    int& r_ref = ref;
    r_ref++;
    cout << "var:" << var << "ref:" << ref << "r_ref:" << r_ref << endl;
发生的情况是,您正在为
ref
引用的对象创建另一个引用
r\u ref
,即
var
。因此,您最终得到了对
var
的两个引用:
ref
r\u ref

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

这句话的意思是:

您不能引用其他引用


就是不能将引用本身视为可以进一步别名的实体:引用是对象的别名,对引用所做的任何操作(包括引用边界!)都是在被引用的对象上进行的。

int var=10声明变量
var
。现在,当您编写
int&ref=var定义对
var
的引用。您可以将
ref
看作是
var
的别名。无论您在哪里使用
ref
,就好像您将直接使用
var


这就是为什么
int&r\u ref=ref只定义了对
var

的另一个引用您编写的代码不是对另一个引用的引用(例如
int&
)。您正在引用一个变量两次。所以,代码是正确的。如果对引用的引用被认为是int&&那么它是正确的。还有一件事我们无法获得引用变量的地址。但是这里的ref指的是var,所以我可以打印&ref。请您解释一下。@Guarav是的,当您执行
&ref
时,您实际上是在获取它所指对象的地址。您不能获取引用本身的地址。事实上,还未确定引用本身是否存在于内存中。