对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&
,但这是一个不同的引用类型)
在代码中,referenceref
是指由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
时,您实际上是在获取它所指对象的地址。您不能获取引用本身的地址。事实上,还未确定引用本身是否存在于内存中。