在C++中传递对文字的引用会发生什么?

Gil*_*aor 7 c++

这里发生了什么:

double foo( const double& x ) {
   // do stuff with x
}

foo( 5.0 );
Run Code Online (Sandbox Code Playgroud)
  1. 编译器是否创建匿名变量并将其值设置为5.0?
  2. x是否引用只读内存中的内存位置?这是一个奇怪的措辞,我知道......

编辑:我忘记了const关键字......

sha*_*oth 6

为此目的创建临时变量,它通常在堆栈上创建.

您可以尝试const_cast,但无论如何它都是无用的,因为一旦函数返回,您就无法再访问变量.