パラメーターを 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) と解釈されます。
関連参照