単項演算子のオーバーロード
単項演算子は、1 つのオペランドから結果を生成します。 標準の単項演算子のセットのオーバーロードを定義して、ユーザー定義型で動作させることができます。
オーバーロード可能な単項演算子
ユーザー定義型では、次の単項演算子をオーバーロードできます。
!
(論理 NOT)&
(アドレス取得)~
(補数)*
(ポインター逆参照)+
(単項プラス符号)-
(単項マイナス符号)++
(プレフィックスの増分) または (後置インクリメント)--
(プレフィックスのデクリメント) または (後置デクリメント)
単項演算子のオーバーロード宣言
オーバーロードされた単項演算子は、非静的メンバー関数または非メンバー関数として宣言できます。 オーバーロードされた単項メンバー関数は暗黙的に動作するため、引数を this
受け取らなくなります。 非メンバー関数は、1 つの引数で宣言されます。 両方のフォームが宣言されている場合、コンパイラはオーバーロード解決の規則に従って、使用する関数 (存在する場合) を決定します。
次の規則は、すべてのプレフィックス単項演算子に適用されます。 単項演算子関数を非静的メンバー関数として宣言するには、次の宣言形式を使用します。
return-type
operator
op
();
この形式では、戻り値の型であり、 return-type
op
前の表に示した演算子の 1 つです。
単項演算子関数を非メンバー関数として宣言するには、次の宣言形式を使用します。
return-type
operator
op
(
class-type
);
この形式では、 return-type
戻り値の型であり、 op
前の表に示した演算子の 1 つであり class-type
、操作対象の引数のクラス型です。
後置形式は、プレフィックス形式 ++
と --
区別するために追加 int
の引数を受け取ります。 および--
のプレフィックスおよび後置形式の詳細については、「インクリメントおよびデクリメント演算子の++
オーバーロード」を参照してください。
Note
単項演算子の戻り値の型に制限はありません。 たとえば、論理 NOT (!
) が値を返 bool
すのは理にかなっていますが、この動作は適用されません。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示