2 項演算子の多重定義

C++パラメーターを 1 つ持っている非静的メンバー関数、またはパラメーターを 2 つ持っている非メンバー関数のいずれかを使用して、 2 進単項演算子を多重定義します。 2 項演算子 @ は、ステートメント t @ u の形で呼び出されるものと想定します。 ここで、t は、型 T のオブジェクト、u は、 型 U のオブジェクトです。 この演算子を多重定義する非静的メンバー関数は、以下の形式になっています。

 return_type operator@(T)

同じ演算子を多重定義する非メンバー関数は、以下の形式になっています。

return_type operator@(T, U)

多重定義された 2 項演算子は、どんな型も戻すことができます。

次の例では、* 演算子を多重定義します。

struct X {
 
  // member binary operator
  void operator*(int) { }
};
 
// non-member binary operator
void operator*(X, float) { }
 
int main() {
  X x;
  int y = 10;
  float z = 10;
 
  x * y;
  x * z;
}

呼び出し x * y は、x.operator*(y) と解釈されます。 呼び出し x * z は、operator*(x, z) と解釈されます。

関連参照

IBM Copyright 2003