Zitat von
malo:
Ich denke mal, ein Overload ist nicht nötig, weil es ja bei Operatoren grundsätzlich nur Überladungen gibt.
Der Begriff "Überladung" ist hier etwas zweideutig zu verstehen. Funktionen können überladen werden. Dabei nimmt eine Funktion, abhängig vom Kontext, mehrere Formen an. Der Kontext wird in dem Fall durch die Aufrufparameter bestimmt.
Bei der Operatorüberladung bestimmt sich der Kontext aus den Typen der Operanden, was man letztendes auch als das gleiche ansehen kann.
Was mir noch nicht ganz klar ist: Eine Überladung beispielsweise des Additions-Operator sieht ja so aus:
class operator add(A: Typ1; B: Typ2): Typ1;
Was ist der Bezug zwischen dem Operator und der Klasse/dem Record, in dem er deklariert wird? Schließlich steht der Kontext (also die Typen der Operanden) ja in der Signatur allein, die Typzugehörigkeit scheint ja keine Rolle zu spielen.
Könnte ich dementsprechend also meinen Operator zum Addieren von zwei Vektoren innerhalb der Deklaration einer Klasse für komplexe Zahlen angeben, wenn ich als Parameter zwei Objekte vom Typ Vektor angebe?
Oder wie ist das ganze zu verstehen?