参照を戻すこともできた(^^;
+演算子が破壊的なのはマズイか。
#include <iostream> using namespace std; class Foo { private: int i; public: Foo(int i) : i(i) {}; int to_i() { return i; } Foo &operator +(Foo &foo) { i += foo.i; return *this; } Foo &operator =(Foo &foo) { i = foo.i; return *this; } }; int main() { Foo foo1(1), foo2(2); cout << (foo1 + foo2).to_i() << "\n"; foo1 = foo2; cout << foo1.to_i() << "\n"; return 0; }
3
2