3.7 Überladen von Operatoren
  • Unäre und Binäre Operatoren können in C++ überladen werden (inkl. new und delete, aber bis auf . .*  ::  ?:).
  • Syntax: Schlüsselwort "operator" gefolgt von dem Operator.
  • Typisches Anwendungsbeispiel:

                  '=', '+', '-', '+=', '-='     im Zusammenhang mit dynamischen Speicher
                  '>>', '<<'                  für die einfache Ausgabe von Klassen
  • Es können aber keine neuen Operatoren definiert werden und die Syntax (unär, binär) muss erhalten bleiben.
  • Alle Operatoren sind unabhängig voneinander ( + und = sind nicht zusammen +=)
  • Mindestens einer der Parameter muss ein Klassenobjekt sein.
  • Operatoren können von Member-Funktionen überladen werden (dann ist einer der Parameter automatisch das aktuelle Objekt) oder von normalen Funktionen (dann entspricht der erste Parameter dem linken, der zweite dem rechten Operand). Normale Funktionen müssen ggf. als friend deklariert werden.
  • Operatoren können mehrfach überladen werden.
  • ACHTUNG: Die Bedeutung eines überladenen Operators muss nicht der entsprechen, die ein nach dem Allgemeinverständniss zu erwarten ist (z. B. kann man '+' mit einer Subtraktion verknüpfen).
  • ACHTUNG: Man muss beim Überladen extrem darauf achten, keine Seiteneffekte auszulösen.
  • Cast-Operatoren sind auch Operatoren. Damit lassen sich implizite Casts erweitern.
  • Syntax:

            operator typ();
  • Das Überladen von Cast-Operatoren ist nur für Member-Funktionen möglich und daher wird kein Parameter angegeben.
  • Neben dem Cast, wird auch der einparametrige Konstruktor zur Typumwandlung herangezogen.