这是代码:
class A {
public:
int a=0;
A(){};
A func() {
return *this;
}
};
int main() {
A a1;
a1.a = 10;
A &&a2=a1.func();
a2.a = 3;
std::cout << a1.a << std::endl; //输出10
std::cout << a2.a << std::endl; //输出3
return 0;
}
以上结果可以推断出返回一个类的函数在返回的时候的操作很有可能是这样子的:首先复制出一个临时的右值A,然后a2绑定到这个临时右值A;当然我这里有点区分不明白A& operator= (A&& temp){}和直接A&& a2有什么区别。