【问题标题】:reference variable参考变量
【发布时间】:2009-02-03 09:01:05
【问题描述】:

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

【问题讨论】:

  • 你能发布一些示例代码吗?我认为如果没有可参考的代码,读者可能难以理解您的描述。

标签: c++


【解决方案1】:

您可以初始化对常量值的常量引用。

const int &i = 12;

如果引用不是 const,则会出现编译器错误。

int &i = 12; //compiler error

常量值(例如文字)(大部分时间)存储在内存的只读段中。因此,您不能使用非常量引用来引用它们,因为这意味着您可以修改它们。

【讨论】:

  • 这些都不是赋值——它们都是初始化
【解决方案2】:

您不能将常量值分配给非常量引用,就像您不能将常量值的地址分配给指向非常量值的指针一样。

至少,不是没有 const_cast。

编辑:如果您实际上指的是文字值,那么 Luc 的答案是更好的答案。我指的是 const 变量,而不是文字。

【讨论】:

    【解决方案3】:

    您可能对“初始化”和“赋值”之间的区别有些困惑。这些在 C++ 中是不同的,理解差异对于理解语言至关重要。忽略参考:

    int x = 1;    // initialisation
    x = 1;        // assignment
    

    只能初始化引用

    int & r = x;  // initialisation
    r = 2;        // assigns 2 to x _not_ to r
    

    无法重新初始化引用。

    关于您的问题,就 const 而言,您可以使用 const 值初始化 const 引用:

    const int & r2 = 42;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 2021-10-26
      • 2020-04-02
      相关资源
      最近更新 更多