在某些文本中,我们不能将常量值赋给参考变量。当我执行这样的程序时,我可以做到。有没有条件我们不能为参考变量赋值?
答案 0 :(得分:10)
您可以初始化常量值的常量引用。
const int &i = 12;
如果引用不是const,则会出现编译器错误。
int &i = 12; //compiler error
常量值(例如文字)(大部分时间)存储在存储器的只读段中。因此,您不能使用非const引用来引用它们,因为这意味着您可以修改它们。
答案 1 :(得分:1)
您不能将常量值分配给非常量引用,就像您不能将常量值的地址分配给指向非常量值的指针一样。
至少,不是没有const_cast。
编辑:如果您实际上是指字面值,那么Luc的答案就更好了。我指的是const变量,而不是文字。
答案 2 :(得分:1)
对于“初始化”和“分配”之间的区别,您可能会感到有些困惑。这些在C ++中是不同的,理解差异对理解语言至关重要。忽略参考:
int x = 1; // initialisation
x = 1; // assignment
参考资料只能初始化
int & r = x; // initialisation
r = 2; // assigns 2 to x _not_ to r
无法重新初始化参考文献。
关于你的问题,就consts而言,可以使用const值初始化const引用:
const int & r2 = 42;