用数字初始化常量引用

use*_*666 77 c++ reference constants rvalue-reference

下面这行是什么意思?为什么允许这样做,因为 0 是右值而不是变量名?const这句话的意义何在?

const int &x = 0;
Run Code Online (Sandbox Code Playgroud)

use*_*666 72

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

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

  • 您确定“临时变量”是在堆栈上创建的吗?我本以为“x”指向数据段中的某个区域。与字符串文字的工作方式类似。如果“x”指向堆栈,则引用可能会过早变得无效。例如,如果将引用作为指向某个静态变量的指针传递并保留该方法。除此之外,如果该方法的每次调用都会创建一个新的“临时变量”,我认为我们不需要使用“const”。我认为“const”是必要的,因为内存区域在函数调用之间被重用。 (3认同)