【发布时间】:2018-10-25 20:02:41
【问题描述】:
下面一行是什么意思?为什么这是允许的,因为 0 是 r 值而不是变量名?这个声明中const的意义是什么?
const int &x = 0;
【问题讨论】:
标签: c++ reference constants rvalue-reference
下面一行是什么意思?为什么这是允许的,因为 0 是 r 值而不是变量名?这个声明中const的意义是什么?
const int &x = 0;
【问题讨论】:
标签: c++ reference constants rvalue-reference
非常量引用不能指向文字。您不能将文字绑定到对非常量的引用(因为修改文字的值不是有意义的操作),并且只有左值可以绑定到对非常量的引用。但是,您可以将文字绑定到对 const 的引用。
“常量”很重要。在这种情况下,为此目的创建了一个临时变量,它通常创建在堆栈上。
【讨论】:
x 指向数据段中的某个区域。类似于字符串文字的工作方式。如果x 指向堆栈,则引用可能过早失效。例如,如果您将引用作为指向某个静态变量的指针传递并离开该方法。除此之外,如果每次调用该方法都会创建一个新的“临时变量”,我认为我们不需要使用const。我认为const 是必要的,因为内存区域在函数调用之间被重用。