Überladen von unären Operatoren

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Überladen von Operatorfunktionen (Übersicht) - Index

Ein unärer Präfix- oder Suffixoperator kann auf zweierlei Arten überladen werden: durch die Deklarierung einer nichtstatischen Elementfunktion ohne Argumente oder durch die Deklarierung einer Nicht-Elementfunktion mit einem Argument. Wenn @ für einen unären Operator steht, können @x und x@ sowohl als x.operator@() als auch als operator@(x) interpretiert werden (abhängig von den vorangegangenen Deklarationen). Wenn beide Formen deklariert wurden, wird der standardmäßige Argumentvergleich vorgenommen, um die Doppeldeutigkeit zu beseitigen.

  • In der Version 2.0 von C++ wird der überladene Operator ++ oder -- sowohl als Präfix- als auch als Suffixoperator verwendet.
  • Wenn in der Version 2.1 von C++ operator++ oder operator -- als Elementfunktionen ohne Parameter oder als Nicht-Elementfunktion mit einem Parameter deklariert ist, so wird nur der Präfixoperator ++ bzw. -- überladen. Den Suffixoperator ++ oder -- können Sie nur überladen, indem Sie ihn als Elementfunktion mit einem int-Parameter oder als Nicht-Elementfunktion mit einem Klassenargument und einem int-Argument definieren.

Wenn nur die Präfixversion des Operators ++ oder -- überladen ist und der Operator auf ein Klassenobjekt als Suffixoperator angewendet wird, so gibt der Compiler eine Warnung aus. Anschließend ruft er den Präfixoperator auf, so dass das Programm wie ein der Version 2.0 entsprechendes Programm compiliert wird. In diesem Fall werden folgende Warnungen ausgegeben:



 Warnung: Overloaded prefix 'operator ++' used as a postfix operator in function func()
 Warnung: Overloaded prefix 'operator ++' used as a postfix operator in function func()



Siehe auch