Const引用类成员是否延长了临时类的寿命?

Const引用类成员是否延长了临时类的寿命?

为何:

#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;}

提供下列产出:

答案是:

而不是:

答案是:四


慕姐8265434
浏览 594回答 3
3回答

30秒到达战场

只本土化&nbsp;const参考文献延长了使用寿命。该标准在§8.5.3/5[dcl.init.ref]中指定了这种行为,这一节是关于引用声明的初始化器的。示例中的引用绑定到构造函数的参数n,并且当对象n一定会超出范围。生存期扩展不是通过函数参数传递的。第12.2/5[类临时]:第二个上下文是将引用绑定到临时上下文。绑定引用的临时对象或临时对象,即临时绑定的子对象的完整对象,除非如下所述,否则该引用的生存期将持续。一个临时绑定到构造函数的ctor初始化器中的引用成员(§12.6.2[class.base.init])一直持续到构造函数退出。与函数调用中的引用参数绑定的临时参数(§5.2.2[expr.all])一直保持到包含调用的完整表达式完成为止。
打开App,查看更多内容
随时随地看视频慕课网APP