Looking for c++ Keywords? Try Ask4Keywords

C++Überladung des Bedieners


Einführung

In C ++ können Operatoren wie + und -> für benutzerdefinierte Typen definiert werden. Beispielsweise definiert der Header <string> einen + -Operator zum Verketten von Zeichenfolgen. Dazu wird eine Operatorfunktion mit dem operator Schlüsselwort definiert .

Bemerkungen

Die Operatoren für integrierte Typen können nicht geändert werden. Operatoren können nur für benutzerdefinierte Typen überladen werden. Das heißt, mindestens einer der Operanden muss von einem benutzerdefinierten Typ sein.

Die folgenden Operatoren können nicht überladen werden:

  • Der Mitgliederzugriff oder "Punkt" -Operator .
  • Der Zeiger auf den Mitgliederzugriffsoperator .*
  • Der Operator für die Bereichsauflösung ::
  • Der ternäre bedingte Operator ?:
  • dynamic_cast , static_cast , reinterpret_cast , const_cast , typeid , sizeof , alignof und noexcept
  • Die Vorverarbeitungs-Direktiven # und ## , die ausgeführt werden, bevor Typinformationen verfügbar sind.

Es gibt einige Operatoren, die Sie nicht (99,98% der Zeit) überlasten sollten:

  • && und || (bevorzugen Sie stattdessen die implizite Konvertierung in bool )
  • ,
  • Die Adresse des Operators (unary & )

Warum? Sie überladen Operatoren, die ein anderer Programmierer möglicherweise niemals erwartet, was zu einem anderen Verhalten als erwartet führt.

Zum Beispiel die benutzerdefinierten && und || Überlastungen dieser Operatoren ihre Kurzauswertung verlieren und ihre speziellen Eigenschaften Sequenzierung (C ++ 17) verlieren , gilt die Sequenzierung Problem auch , Betreiber Überlastung.

Überladung des Bedieners Verwandte Beispiele