参考变量

时间:2009-02-03 09:01:05

标签: c++

在某些文本中,我们不能将常量值赋给参考变量。当我执行这样的程序时,我可以做到。有没有条件我们不能为参考变量赋值?

3 个答案:

答案 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;