ホームに戻る
 オペレータ、inline関数

/*
*
*   オペレータ、inline関数
*
*   オペレータは = や + といった演算子の挙動を決めることができます。
*   オペレータでは a+b と b+a の挙動が異なる場合があることに注意。
*
*   特別なオペレーターとして = のオペレーターは、
*   定義をしない場合でもコンパイラが自動生成します。
*   これを特にコピー代入演算子と呼びます。
*
*/

#include <iostream>

class A{
  int n;
public:
  A(int n = 0){this->n = n;}
  A& operator=(const A& a){if(this != &a)this->n = a.n;return *this;}  // コピー代入演算子
  A& operator+=(const A& a){this->n += a.n;return *this;}
  A operator+(const A& a1){A a(this->n + a1.n);return a;}
  void printNum();
};

inline void A::printNum(){
  std::cout << n << std::endl;
}

using namespace std;

int main(){
  A a1(2), a2(3), a3(4);

  a1.printNum();
  a2.printNum();
  a3.printNum();

  a3 = a1 + a2;

  a1.printNum();
  a2.printNum();
  a3.printNum();

  return 0;
}

 結果

2
3
4
2
3
5
inserted by FC2 system