如果一个引用初始化为一个对象,它就无法更改,为什么这个工作?

use*_*843 2 c++ reference

我已经读过,一旦引用被初始化为一个对象,它就无法改变.以下代码有效,所以也许我误解了这个概念?(或者他们是否意味着更多的是不可改变的意义?)

int main()
{

    int x = 4;
    int& j = x;
    cout << j << endl;
    int y = 5;
    j = y;
    cout << j << endl;
}
Run Code Online (Sandbox Code Playgroud)

And*_*owl 5

以下代码有效,所以也许我误解了这个概念?

的确,我担心你会误解这个概念.表达方式:

j = y;
Run Code Online (Sandbox Code Playgroud)

没有重新绑定j,使之成为一个参考y,而,它分配的值:y通过引用的对象j.分配后尝试此操作:

cout << (&j == &x)
Run Code Online (Sandbox Code Playgroud)

你会看到它1被打印出来(意思j仍然是别名x).

初始化后,引用将成为绑定对象的别名.您在引用上执行的所有操作都是在引用的对象上执行的操作.

引用不能重新绑定或不绑定,它实际上只是它所绑定的对象的替代名称.