为什么这样:
#include <string>
#include <iostream>
using namespace std;
class Sandbox
{
public:
Sandbox(const string& n) : member(n) {}
const string& member;
};
int main()
{
Sandbox sandbox(string("four"));
cout << "The answer is: " << sandbox.member << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给出输出:
答案是:
代替:
答案是:四
可能重复:
const引用是否延长了临时的寿命?
我的编译器没有抱怨为const引用分配临时:
string foo() {
return string("123");
};
int main() {
const string& val = foo();
printf("%s\n", val.c_str());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么?我认为返回的字符串foo是临时的,val可以指向生命周期结束的对象.C++标准是否允许这样做并延长返回对象的生命周期?