This question already has answers here:
c++ references appear reassigned when documentation suggests otherwise

(2个答案)


7年前关闭。




我读过,一旦将引用初始化为对象,就无法更改它。
以下代码有效,所以也许我误解了这个概念? (或者它们在不可变的意义上意味着更多?)
int main()
{

    int x = 4;
    int& j = x;
    cout << j << endl;
    int y = 5;
    j = y;
    cout << j << endl;
}

最佳答案



确实,我担心您会误解这个概念。表达方式:

j = y;

是否不重新绑定(bind)j,以便它成为对y的引用:而是将y的值分配给j引用的对象。分配后尝试以下操作:
cout << (&j == &x)

并且您将看到1被打印出来(这意味着j仍然是x的别名)。

初始化之后,引用将成为绑定(bind)对象的别名。 您对引用所做的所有操作,都是对被引用的对象进行的。

引用不能重新绑定(bind)或解除绑定(bind),实际上它只是绑定(bind)对象的替代名称。

关于c++ - 如果对对象的引用一旦被初始化,就无法更改,这为什么起作用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16950203/

10-11 22:42
查看更多