#include <iostream>
using namespace std;
class Myclass{
public:
int a=3;
Myclass& operator=(const Myclass& obj){
a=obj.a;
return *this;
}
Myclass operator+(Myclass& obj){
Myclass temp;
temp.a=a+obj.a;
return temp;
}
};
int main()
{
Myclass A;
Myclass B;
B=A+B;
cout<<B.a;
return 0;
}
I read a code from the book. It is originally written for strings but I rewrote it with integer to simplify my question.
My question is : The overloaded operator + function return a Myclass object.I think that this object is a rvalue. Then why can it be passed as an argument of operator= function? It needs a reference of Myclass object, which is a lvalue.
Why can this code run successfully?