这里会发生什么:
double foo( const double& x ) {
// do stuff with x
}
foo( 5.0 );
编辑:我忘记了const关键字......
答案 0 :(得分:6)
为此目的创建一个临时变量,它通常在堆栈上创建。
您可以尝试const_cast,但无论如何它都是无用的,因为一旦函数返回,您就无法再访问变量。
答案 1 :(得分:1)
非const引用不能指向文字。
$ g ++ test.cpp
test.cpp:在函数int main()':
test.cpp:10: error: invalid initialization of non-const reference of type 'double&' from a temporary of type 'double'
test.cpp:5: error: in passing argument 1 of
double foo(double&)'
TEST.CPP:
#include <iostream>
using namespace std;
double foo(double & x) {
x = 1;
}
int main () {
foo(5.0);
cout << "hello, world" << endl;
return 0;
}
另一方面,您可以将文字传递给const引用,如下所示。 测试2.cpp:
#include <iostream>
using namespace std;
double foo(const double & x) {
cout << x << endl;
}
int main () {
foo(5.0);
cout << "hello, world" << endl;
return 0;
}