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.