为什么c++中没有常量引用

Why there are no constant references in C++?

本文关键字:常量 引用 c++ 为什么      更新时间:2023-10-16

我知道我不允许写long& const x。为什么不呢?从理论上讲,我可以有一个指向x的常量引用,只是不能将引用设置为另一个地址。

为什么在c++中被禁止?

编辑:我知道有些东西我不明白,但我可以分配一个引用到另一个变量。这段代码的工作原理是:
#include <iostream>
int main()
{
 int a = 1, b = 2;
 int & x = a;
 x = b;
 return 0;
}

引用已经是常量了。

初始化后不能将它们重新赋值为引用另一个变量,必须始终将它们初始化为引用一个变量。

在你的例子中,代码没有做你认为的事情:

x = b;没有将x重新赋值给b,而是将b的值赋给x所引用的变量,即a

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

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

你已经不能了。

引用是不可变的。添加const不会使它们"更"不可变。

根本没有理由添加这一点,而充分的理由是为了避免它可能带来的混乱。

特别地,它会导致人们认为引用是对象,而它们不是。引用不是另一种伪装下的指针。它们是参考文献;另一个对象的别名。名称不能为const

可以将引用赋值给另一个变量。

不,你不能。

这与你所说的相矛盾。

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