为什么c++中没有常量引用
Why there are no constant references in C++?
我知道我不允许写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
。
相关文章:
- 什么时候在C++中返回常量引用是个好主意
- 通过常量引用传递参数的矩阵模板类
- 在C++中使用非常量引用作为常量
- 具有常量引用参数的函数模板专用化
- 多个"常量引用"变量可以共享同一个内存吗?
- 为什么 STL 容器适配器堆栈中的 top 返回常量引用?
- 为什么常量方法可以采用非常量引用?
- 为什么当我们有常量引用时创建临时对象?
- 如何返回向量的常量引用?
- C++:常量引用参数
- 不同于按值传递和常量引用传递的程序集
- 为什么const_cast和static_cast常量引用没有效果?
- C++ 获取函数在常量引用中按值返回的结果
- 从 BubbleSort* 类型的右值初始化 'AssortedSorter&' 类型的非常量引用无效"
- C++ 在类中使用常量引用文本时 O2 内存泄漏
- 是否可以跨 dll 边界返回常量引用/指向 std::vectors?
- C++中大多数/所有 setter 函数的参数是否应该写为常量引用?
- 通过非常量引用参数修改常量引用参数
- 将常量引用传递给线程
- 为什么C++中没有常量引用,就像常量指针一样?