Ü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:
!
(Logische NOT)&
(Adresse von)~
(Ergänzung)*
(Zeiger-Ableitung)+
(unär plus)-
(unäre Negation)++
(Präfix-Inkrement) oder (Postfix-Inkrement)--
(Präfix-Dekrement) oder (Postfix-Decrement)
Unäre Operatorüberladungsdeklarationen
Sie können überladene unäre Operatoren entweder als nicht statische Memberfunktionen oder als nicht statische Memberfunktionen deklarieren. Überladene unäre Memberfunktionen verwenden kein Argument, da sie implizit ausgeführt this
werden. 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 return-type
ist der Rückgabetyp und op
einer der Operatoren, die in der vorherigen Tabelle aufgeführt sind.
Verwenden Sie dieses Deklarationsformular, um eine unäre Operatorfunktion als nicht zu deklarieren:
return-type
operator
op
(
class-type
);
In diesem Formular return-type
ist der Rückgabetyp einer der Operatoren, op
die in der vorherigen Tabelle aufgeführt sind, und class-type
ist der Klassentyp des Arguments, auf dem ausgeführt werden soll.
Die Postfixformen 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 Increment and decrement operator overloading.
Hinweis
Es gibt keine Einschränkung für die Rückgabetypen der unären Operatoren. Beispielsweise ist es sinnvoll, dass logische NOT (!
) einen bool
Wert zurückgibt, aber dieses Verhalten wird nicht erzwungen.
Siehe auch
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