Freigeben über


Überladen von unären Operatoren

Unäre Operatoren erzeugen ein Ergebnis aus einem einzelnen Operanden. Sie können Überladungen eines Standardsatzes von unären Operatoren definieren, um an benutzerdefinierten Typen zu arbeiten.

Überlastbare unäre Operatoren

Sie können die folgenden unären Operatoren für benutzerdefinierte Typen überladen:

Unäre Operatorüberladungsdeklarationen

Sie können überladene unäre Operatoren entweder als nicht statische Memberfunktionen oder als Nichtmemberfunktionen deklarieren. Überladene unäre Memberfunktionen verwenden kein Argument, da sie implizit mit this arbeiten. Nichtemberfunktionen werden mit einem Argument deklariert. Wenn beide Formulare deklariert werden, folgt der Compiler den Regeln für die Überladungsauflösung, um zu bestimmen, welche Funktion verwendet werden soll, falls vorhanden.

Die folgenden Regeln gelten für alle unären Präfixoperatoren. Verwenden Sie dieses Deklarationsformular, um eine unäre Operatorfunktion als nicht statische Memberfunktion zu deklarieren:

return-type operator op ();

In diesem Formular ist dabei return-type der Rückgabetyp und op ist einer der in der vorhergehenden Tabelle aufgelisteten Operatoren.

Verwenden Sie dieses Deklarationsformular, um eine unäre Operatorfunktion als Nichtmemberfunktion zu deklarieren:

return-type operator op ( class-type );

In diesem Formular ist return-type der Rückgabetyp, op ist einer der Operatoren, die in der vorherigen Tabelle aufgeführt sind, und class-type ist der Klassentyp des Arguments, auf dem ausgeführt werden soll.

Die Postfixformen von ++ und -- verwenden ein zusätzliches int-Argument, um sie von den Präfixformen zu unterscheiden. Weitere Informationen zu Präfix- und Postfix-Formularen ++ und ---Elementen finden Sie unter Inkrement- und Dekrementoperatorüberladung.

Hinweis

Es gibt keine Einschränkung für die Rückgabetypen der unären Operatoren. Beispielsweise ist es sinnvoll, dass das logische NICHT (!) einen bool-Wert zurückgibt, aber dieses Verhalten wird nicht erzwungen.

Weitere Informationen

Operatorüberladung