gpt4 book ai didi

c++ - 是否可以在不同位置为一个引用分配不同的值?

转载 作者:太空宇宙 更新时间:2023-11-03 10:33:49 25 4
gpt4 key购买 nike

#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;
}

**

编辑:

**此代码对所有 3 种情况都返回 1。这不应该是一个错误吗?

C++ 标准的 8.5.3 部分说:

A reference cannot be changed to refer to another object after initialization. Note that initialization of a 2 reference is treated very differently from assignment to it. Argument passing (5.2.2) and function value return (6.6.3) are initializations.

最佳答案

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

你可以用下面的代码看到这一点:

x = 5;
cout << x;
cout << z;

xz 都将具有值 5,因为 z 仍然是对 x 的引用。

关于c++ - 是否可以在不同位置为一个引用分配不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8585783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com