単項演算子のオーバーロード

単項演算子は、1 つのオペランドから結果を生成します。 標準の単項演算子のセットのオーバーロードを定義して、ユーザー定義型で動作させることができます。

オーバーロード可能な単項演算子

ユーザー定義型では、次の単項演算子をオーバーロードできます。

単項演算子のオーバーロード宣言

オーバーロードされた単項演算子は、非静的メンバー関数または非メンバー関数として宣言できます。 オーバーロードされた単項メンバー関数は暗黙的に動作するため、引数を this受け取らなくなります。 非メンバー関数は、1 つの引数で宣言されます。 両方のフォームが宣言されている場合、コンパイラはオーバーロード解決の規則に従って、使用する関数 (存在する場合) を決定します。

次の規則は、すべてのプレフィックス単項演算子に適用されます。 単項演算子関数を非静的メンバー関数として宣言するには、次の宣言形式を使用します。

return-type operator op ();

この形式では、戻り値の型であり、 return-typeop 前の表に示した演算子の 1 つです。

単項演算子関数を非メンバー関数として宣言するには、次の宣言形式を使用します。

return-type operator op ( class-type );

この形式では、 return-type 戻り値の型であり、 op 前の表に示した演算子の 1 つであり class-type 、操作対象の引数のクラス型です。

後置形式は、プレフィックス形式 ++-- 区別するために追加 int の引数を受け取ります。 および--のプレフィックスおよび後置形式の詳細については、「インクリメントおよびデクリメント演算子の++オーバーロード」を参照してください

Note

単項演算子の戻り値の型に制限はありません。 たとえば、論理 NOT (!) が値を返 bool すのは理にかなっていますが、この動作は適用されません。

関連項目

演算子のオーバーロード