代入演算子、複合代入演算子のoperatorオーバーロードの戻り値型

忘れるのでメモ。
代入演算子、複合代入演算子オーバーロードする場合戻り値の型は参照型にする。
代入を伴わない四則演算などはコピーを返す。


class integer{
private:
int _a;
public:
operator int(){
return _a;
}
integer( const int& _int ):
_a( _int )
{
}
integer operator +( const integer& v ){
integer tmp;
tmp._a = this._a + v._a;
return tmp;
}
integer& operator +=( const integer& v ){
this._a = this._a + v;
return *this;
}
integer& operator =( const integer& v ){
this._a = v._a;
return *this;
}
};

オブジェクトの値が書き換えられるoperatorでは参照を返すという感じかな。
int型などでも
int a=10;
(a *= 10) = 0;
とするとaは0に成るため参照が返っていることがわかります。