オペレーターのオーバーロードとは
オペレーターのオーバーロードは、プログラマーがデフォルトのオペレーターをオーバーライドできるようにするコンピュータープログラミング言語の機能です。 演算子関数がオーバーロードされると、デフォルトで演算子が処理できるデータ型とは異なるデータ型のカスタム引数で宣言される場合があります。 新しいパラメータは、プリミティブ型またはユーザー定義型です。 オーバーライド関数の本体内で、プログラマーは必要に応じてパラメーター値を操作できます。 プログラマは、演算子のオーバーロードを使用して、ユーザー定義のデータ型を操作するための直感的なショートカットを作成したり、デフォルトのデータ型の処理方法を変更したりできます。
ユーザー定義のデータ型を作成すると、2つのデータ型を一緒に追加したり、データ型で単項増分演算子を使用して内部データを増分したりするなど、簡単な操作タスクを実行できません。 加算記号を含む演算子は、2つのカスタムデータ型の間でバイナリ演算子として使用される場合、ユーザー定義の結果を返すようにオーバーライドできます。 同様に、増分演算子などの単項演算子は、ユーザー定義型内の内部値を増やすためにオーバーライドされる場合があります。
演算子がオーバーロードされると、コンパイラは、オーバーロードされた演算子に遭遇したときに何をすべきかを決定する必要があります。 コンパイラは、オペランドとして、または演算子と組み合わせて使用されているデータ型に基づいて、実行する適切なアクションを決定します。 演算子関数のパラメーター値であるオペランドがユーザー定義のデータ型である場合、コンパイラーは、使用されているオペランドに一致するパラメーターを持つオーバーロード関数を選択します。
コンピュータ言語は、この種のアドホックな多型をどのように許可するかによって異なります。 異なる言語では、新しいカスタム演算子の作成、そのすべてまたは一部の演算子のオーバーロードが許可される場合があります。または、オペレーターのオーバーロードがまったく許可されない場合があります。 C ++、C#、PHP、およびPerlはすべて、それらの演算子の一部をオーバーロードすることを許可します。 C、Java、およびJavaScriptでは、演算子のオーバーロードは許可されていません。
一般に、演算子のオーバーロードと関数のオーバーロードの両方が議論の対象となっています。 プログラマーにオペレーターの動作方法を変更する自由を与えると、カスタマイズされたコードを使用する他のプログラマーが意図しないエラーを作成する可能性があると主張する人もいます。 反対の視点は、オペレーターのオーバーロードを許可すると、プログラマーが理解しやすく、生産コストが低く、エラーを減らす直感的で簡潔なコードを作成できることを提案します。