我知道我不允许写long& const x
。但为什么不呢?从理论上讲,我可以对x进行持续的引用。我只是无法将引用设置为另一个地址。
为什么在C ++中禁止它?
编辑:我知道有一些我不理解的东西,但我可以为另一个变量分配一个引用。这段代码有效:
#include <iostream>
int main()
{
int a = 1, b = 2;
int & x = a;
x = b;
return 0;
}
但这与你所说的相矛盾。
答案 0 :(得分:6)
参考文献已经不变。
您无法在初始化后重新分配它们以引用另一个变量,并且必须始终初始化它们以引用变量。
在您的示例中,代码没有按照您的想法执行:
setTitle("YOUR FRAGMENT TITLE");
没有重新分配x = b;
以引用x
,它会将b
的值分配给b
引用的变量,即x
。
引用只是一个别名,另一个名称,用于变量。这意味着您可以用a
替换x
的每个实例,并且行为将是相同的。
答案 1 :(得分:3)
我只是无法将引用设置为另一个地址。
你已经不能。
引用是不可变的。添加const
不会使他们更多&#34;更多&#34;不可变的。
没有理由加上这个,并且有理由避免它可能带来的混乱。
特别是,它会导致人们认为引用是对象,而它们并非如此。参考文献不是不同的幌子。他们是参考;另一个对象的别名。名称不能是const
。
我可以为另一个变量分配引用。
不,你不能。
这与你的所作所为相矛盾。
不,你误解了自己的代码。使用x = b
,您将a
设置为2
。