为什么C ++中没有常量引用?

时间:2015-10-19 11:00:20

标签: c++ reference const

我知道我不允许写long& const x。但为什么不呢?从理论上讲,我可以对x进行持续的引用。我只是无法将引用设置为另一个地址。

为什么在C ++中禁止它?

编辑:我知道有一些我不理解的东西,但我可以为另一个变量分配一个引用。这段代码有效:

#include <iostream>

int main()
{
 int a = 1, b = 2;
 int & x = a;
 x = b;
 return 0;
}

但这与你所说的相矛盾。

2 个答案:

答案 0 :(得分:6)

参考文献已经不变。

您无法在初始化后重新分配它们以引用另一个变量,并且必须始终初始化它们以引用变量。

在您的示例中,代码没有按照您的想法执行:

setTitle("YOUR FRAGMENT TITLE"); 没有重新分配x = b;以引用x,它会将b的值分配给b引用的变量,即x

引用只是一个别名,另一个名称,用于变量。这意味着您可以用a替换x的每个实例,并且行为将是相同的。

答案 1 :(得分:3)

  

我只是无法将引用设置为另一个地址。

你已经不能。

引用是不可变的。添加const不会使他们更多&#34;更多&#34;不可变的。

没有理由加上这个,并且有理由避免它可能带来的混乱。

特别是,它会导致人们认为引用是对象,而它们并非如此。参考文献不是不同的幌子。他们是参考;另一个对象的别名。名称不能是const

  

我可以为另一个变量分配引用。

不,你不能。

  

这与你的所作所为相矛盾。

不,你误解了自己的代码。使用x = b,您将a设置为2