Ü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:
!
(logisches NICHT)&
(address-of)~
(Komplement)+
(unäres Plus)-
(unäre Negation)++
(Präfix-Inkrement) oder (Postfix-Inkrement)--
(Präfix-Dekrement) oder (Postfix-Dekrement)
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für