【问题标题】:Initialization of a constant reference with a number [duplicate]用数字初始化常量引用[重复]
【发布时间】:2018-10-25 20:02:41
【问题描述】:

下面一行是什么意思?为什么这是允许的,因为 0 是 r 值而不是变量名?这个声明中const的意义是什么?

const int &x = 0;

【问题讨论】:

标签: c++ reference constants rvalue-reference


【解决方案1】:

非常量引用不能指向文字。您不能将文字绑定到对非常量的引用(因为修改文字的值不是有意义的操作),并且只有左值可以绑定到对非常量的引用。但是,您可以将文字绑定到对 const 的引用。

“常量”很重要。在这种情况下,为此目的创建了一个临时变量,它通常创建在堆栈上。

【讨论】:

  • 你确定“临时变量”是在栈上创建的吗?我本来希望x 指向数据段中的某个区域。类似于字符串文字的工作方式。如果x 指向堆栈,则引用可能过早失效。例如,如果您将引用作为指向某个静态变量的指针传递并离开该方法。除此之外,如果每次调用该方法都会创建一个新的“临时变量”,我认为我们不需要使用const。我认为const 是必要的,因为内存区域在函数调用之间被重用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
相关资源
最近更新 更多