#include <iostream>
using namespace std;
int main ()
{
int x = 0;
int y = 1;
int& z = x;
z = x;
z = y;
cout << "\nx: " << x;
cout << "\ny: " << y;
cout << "\nz: " << z;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
**
**对于所有3个案例,此代码返回1.这不应该是一个错误吗?
8.5.3 C++标准部分说:
初始化后,无法更改引用以引用另一个对象.请注意,2引用的初始化与赋值的处理方式非常不同.参数传递(5.2.2)和函数值返回(6.6.3)是初始化.
不,在您的代码中,您没有更改z引用的内容,而是更改内容z(以及它引用的内容x).
您可以使用以下代码查看此内容:
x = 5;
cout << x;
cout << z;
Run Code Online (Sandbox Code Playgroud)
这两个x和z的值将为5,因为z仍然是一个参考x.