This question already has answers here:
c++ references appear reassigned when documentation suggests otherwise
(2个答案)
7年前关闭。
我读过,一旦将引用初始化为对象,就无法更改它。
以下代码有效,所以也许我误解了这个概念? (或者它们在不可变的意义上意味着更多?)
是否不重新绑定(bind)
并且您将看到
初始化之后,引用将成为绑定(bind)对象的别名。 您对引用所做的所有操作,都是对被引用的对象进行的。
引用不能重新绑定(bind)或解除绑定(bind),实际上它只是绑定(bind)对象的替代名称。
(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/