C++ 从函数返回引用vs将临时绑定到常量ref

C++ 从函数返回引用vs将临时绑定到常量ref,c++,reference,return-type,C++,Reference,Return Type,我是对的,这(取自): ? 为什么不同?有人能说“临时的生存期不会在函数调用中扩展(即使绑定到const ref)”? 或者什么是解释,为什么第一个可以,但第二个不行?第一个很好,因为返回值(临时值)直接绑定到对const的引用,那么临时值的生存期将扩展到引用的生存期 请注意,在第二种情况下没有临时变量,x是一个局部变量,它在退出函数时将被销毁,然后函数将始终返回一个悬空引用;该引用用于初始化y,但没有任何更改,y也将是一个悬空引用。首先回答这里回答您的问题。@GillBates是的,我也刚刚找

我是对的,这(取自):

?

为什么不同?有人能说“临时的生存期不会在函数调用中扩展(即使绑定到const ref)”?
或者什么是解释,为什么第一个可以,但第二个不行?

第一个很好,因为返回值(临时值)直接绑定到对const的引用,那么临时值的生存期将扩展到引用的生存期


请注意,在第二种情况下没有临时变量,
x
是一个局部变量,它在退出函数时将被销毁,然后函数将始终返回一个悬空引用;该引用用于初始化
y
,但没有任何更改,
y
也将是一个悬空引用。

首先回答这里回答您的问题。@GillBates是的,我也刚刚找到了它
string f() { return "abc"; }

void g() {
    const string& s = f();
    cout << s << endl;    // can we still use the "temporary" object?
}
const string& foo() { string x{"abc"}; return x; }
void bar() {
    const string& y = foo();
}