能够在C++中重置引用[已关闭]

3mpgtkmj  于 2023-01-22  发布在  其他
关注(0)|答案(2)|浏览(105)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3天前关闭。
社区在3天前审查了是否重新讨论此问题,并将其关闭:
原始关闭原因未解决
Improve this question
在阅读了this的答案后,我决定尝试一下。令我惊讶的是,下面的代码工作正常,并且引用被正确地重新定位。这是为什么?

#include <iostream>

using namespace std;

int main()
{
    int a = 0;
    int b = 1;

    int& ref{a};
    ref = b;

    cout << ref << endl;

    return 0;
}

nue99wik

nue99wik1#

引用ref本身未重置。它仍引用变量a。此语句

ref = b;

已更改引用变量a的值。为确保正确,请插入以下语句

std::cout << "a = " << a << '\n';

可以将引用视为它们所引用的变量的别名。

ubbxdtey

ubbxdtey2#

引用只是它所引用的变量的别名。一旦一个引用被绑定,它就不能被重新绑定。之后你对一个引用所做的任何事情实际上都发生在它所引用的变量上。如果你从一个引用中读取,它就从变量中读取。如果你给一个引用赋值,它就把值赋给变量。如果你取一个引用的地址,则它将采用变量的地址。
所以,这些陈述:

ref = b;
cout << ref << endl;

实际上只是这样做:

a = b;
cout << a << endl;

相关问题