クラスc1の代入演算子をオーバーロードしますが、クラスc1とc2を加算するために加算演算子をオーバーロードします。オーバーロード代入演算子、rhsは関数呼び出しです
// signatures of the overloaded operators:
c2 c1::operator+(c2 & obj_c2);
c1& c1::operator=(c2& obj_c2);
// use them like this:
c1 obj1;
c2 ojb2;
obj1=obj1+ojb2;
これはエラーとしてコンパイルされます。しかし、私は一時的なオブジェクトを使用すると、それは動作します:
c1 obj1;
c2 ojb2, temp;
temp=obj1+ojb2;
obj1=temp;
私が使用したコンパイラは、どのように一時的なオブジェクトなしで問題になることができますか?
加算演算子を参照を返すか、値をとる別の代入演算子を追加します。 – Barmar
[canonical operator overload implementation](http://en.cppreference.com/w/cpp/language/operators#Canonical_implementations)をチェックすることをお勧めします。代入演算子への引数が* 'const' *への参照であることに注目してください。 –