Operator-Funktionen (Syntax) 

Hinter einem Operator verbirgt sich im Endeffekt nichts weiter als eine Elementfunktion einer Klasse. Die Operatoren beziehen sich also immer auf eine bestimmte Klasse und müssen -- damit sie für eine Klasse zur Verfügung stehen -- zunächst implementiert werden.
Bevor wir uns in diesem Abschnitt etwas ausführlicher mit der Technik des Überladens beschäftigen werden, zu Beginn noch einmal eine Übersicht über alle Operatoren, die uns zum Überladen zur Verfügung stehen:
 
+=  -=  *=  /=  %=  ^=  &= 
|=  <<  >>  >>=  <<=  ==  !=  <=  >=  && 
||  ++  --  ->*  ->  []  ()  new  delete 
 
Ganz allgemein wird dabei zwischen unären, binären und ternären Operatoren unterschieden (vgl. hierzu Kapitel 3: Arithmetische Ausdrücke ).
Diese Unterscheidung der Operatoren ist auch für das Überladen von Interesse, da man diese nämlich nicht abändern kann. Zwar ist es möglich, einem Operator für die eigene Klasse eine (fast) beliebige Funktionalität zuzuweisen, eine Veränderung der Anzahl der Operanden ist jedoch nicht zulässig (vgl. hierzu Grundsätzlich ist beim Überladen Folgendes zu beachten ).

Mit einigen dieser Operatoren werden wir uns in eigenen Unterabschnitten in diesem Kapitel beschäftigen. Zunächst geht es jedoch erst einmal um die Technik im allgemeinen.
Die Operatoren einer Klasse werden innerhalb der Klassendefinition über das Schlüsselwort operator definiert.
Am besten betrachten wir gleich ein Beispiel (hier: Beispielklasse complex), da das Vorgehen dann einsichtiger wird.