C++ 为什么在C++;?
我知道我不能写C++ 为什么在C++;?,c++,reference,constants,C++,Reference,Constants,我知道我不能写long&const x。但为什么不呢?理论上我可以有一个对x的常数引用。我只是无法将引用设置为其他地址 为什么C++中禁止它? 编辑:我知道有些事情我不明白,但我可以给另一个变量指定一个引用。这段代码可以工作: #include <iostream> int main() { int a = 1, b = 2; int & x = a; x = b; return 0; } #包括 int main() { INTA=1,b=2; int&x=a;
long&const x
。但为什么不呢?理论上我可以有一个对x的常数引用。我只是无法将引用设置为其他地址
为什么C++中禁止它?
编辑:我知道有些事情我不明白,但我可以给另一个变量指定一个引用。这段代码可以工作:
#include <iostream>
int main()
{
int a = 1, b = 2;
int & x = a;
x = b;
return 0;
}
#包括
int main()
{
INTA=1,b=2;
int&x=a;
x=b;
返回0;
}
但这与你所说的是矛盾的。引用已经总是恒定不变的 初始化后,不能将它们重新指定为引用另一个变量,并且必须始终将它们初始化为引用一个变量 在您的示例中,代码没有执行您认为的操作:
x=b
不会重新分配x
以引用b
,而是将b
的值分配给x
正在引用的变量,即a
引用只是变量的别名,即另一个名称。这意味着您可以将x
的每个实例替换为a
,其行为将是相同的
我只是无法将引用设置为其他地址
你已经不能了
引用是不可变的。添加const
不会使它们“更”不可变
根本没有理由添加这一点,也没有任何理由避免它可能带来的混乱
特别是,它会导致人们认为引用是对象,而不是对象。引用不是另一种伪装下的指针。它们是参考文献;另一个对象的别名。和名称不能是const
我可以将引用分配给另一个变量
不,你不能
这与你所说的是矛盾的
不,是你误解了自己的代码。使用
x=b
,您正在将a
设置为2
您是否缺少引用始终是常量的事实?常量引用声明如下:const long&x
“但我可以将引用分配给另一个变量”-不,您不能;代码实际做的是将b
的值移动到a
,而不是重新设置引用的基础。请记住,作为参考-x
是a
的一种别名形式,因此无论您对其做什么,都会对a
产生透明的影响,包括赋值x
不能更改为处理不同的对象。在int&x=a代码>,“x”和“a”是同一对象的两个不同名称,并且x=b
与a=b完全相同
@Manos:不,这是对-const
的引用。明白为什么准确的术语很重要吗?谢谢,这就是我要找的!