すべてのオーバーロードした演算子 (operator+ や operator- など) は、メンバー関数としてモデル化できます。ただしストリーム出力 operator<< は除きます。これは、メンバー関数ではなくグローバル関数であり、フレンド関数として宣言する必要があります。クラス・メンバーであるオーバーロードされた演算子は、すべて基本操作として定義されます。
演算子のオーバーロードを理解するため、以下のように定義した 2 つのクラス Complex と MainClass を見てみましょう。