可以在不同位置为一个参考分配不同的值吗?

Aqu*_*irl 1 c++ reference

#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)是初始化.

DRH*_*DRH 6

不,在您的代码中,您没有更改z引用的内容,而是更改内容z(以及它引用的内容x).

您可以使用以下代码查看此内容:

x = 5;
cout << x;
cout << z;
Run Code Online (Sandbox Code Playgroud)

这两个xz的值将为5,因为z仍然是一个参考x.

  • 不,z是x的别名.如果您打印x和z的地址,您会看到它们是相同的.如果要保存x的地址,则需要将z声明为指针.(如果它是一个指针,你可以改变它所拥有的地址,有效地改变它所指向的变量) (3认同)