为什么这样做:
#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;
}
给出以下输出:
代替:
最佳答案
仅本地const
引用会延长寿命。
该标准在第8.5.3 / 5节[dcl.init.ref](引用声明的初始化程序部分)中指定了这种行为。您的示例中的引用绑定(bind)到构造函数的参数n
,并且当绑定(bind)对象n
超出范围时变为无效。
生存期扩展不能通过函数参数传递。 §12.2/ 5 [class.temporary]: