演算子のオーバーロード

参照を戻すこともできた(^^;
演算子が破壊的なのはマズイか。

#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