bar*_*-md 6 c++ reference lifetime rvalue lvalue
是,返回左值引用*this,允许何时*this是右值?
#include <iostream>
#include <string>
using namespace std;
class A {
public:
A& f() {
return *this;
}
string val() const {
return "works";
}
};
int main() {
cout << A{}.f().val();
}
Run Code Online (Sandbox Code Playgroud)
是否有任何情况下返回的值f()将在某个时刻成为悬空参考?
f()如果这是一个像示例一样的右值,那么调用是否会延长调用者的生命周期?
*this永远不是右值,但在这种情况下,它是(参考)临时的.临时对象是直到它们被定义完成该语句有效对象,即,直到代码到达终止;,或直到该控制表达式的结尾for,if,while,do,和switch语句,例如if (A{}.f()) { something; },临时是有效的,直到最后一个)之前的身体的条件({ something; }).