C++演算子のオーバーロードのルールは何か
C++の演算子オーバーロードの規則は次の通りです。
- 新しい演算子の作成はできません。既存の演算子のオーバーロードのみ可能です。
- オーバーロードする演算子の少なくとも片方がユーザー定義型でなければなりません。
- オーバーロードする演算子は、少なくとも1つの関数パラメータを持つ。
- オーバーロードした演算子は、その本来の優先順位と結合性を変更することはできません。
- オーバーロードされた演算子はメンバー関数またはフレンド関数である必要があります。
加えて、注意が必要な特殊なルールがいくつかあります。
- 算術演算子(+、-、*、/、%)は非静的メンバ関数のみをオーバーロードできます。
- 代入演算子(=)は、メンバー関数のみをオーバーロードできます。
- インデックス演算子([])と関数呼び出し演算子(())は、メンバ関数またはノンメンバ関数にオーバーロードできますが、通常はメンバ関数にオーバーロードすることを推奨します。
- 論理演算子(&&、||、!)および関係演算子(<、>、<=、>=、==、!=)はメンバー関数または非メンバー関数としてオーバーロードできますが、通常は非メンバー関数としてオーバーロードすることを推奨します。
- 入出力演算子(>>および<<)は非メンバ関数としてオーバーロードする必要がある。
演算子代入を正しく行うために役立つ原則であり、より柔軟かつ使い勝手の良い方法を提供する。