Ãœberladen von Operatoren
← Deep Copy | ● | Operatorliste →
Operatoren sind unter C++ nichts anderes als eine abgekürzte Schreibweise für den Aufruf einer entsprechenden Funktion, z.B. ist der Operator + eine Abkürzung für die Funktion add(…):
z.B.: 1 + 1 ←→ add(1, 1)
z.B.: 2.0 + 3.0 ←→ add(2.0, 3.0)
Die Funktion add(…) ist überladen, weil es verschiedene Implementierungsvarianten für die verschiedensten Parametertypen int, double etc. gibt:
double add(double a, double b);
...
Funktionen wie add() können beliebig überladen werden, d.h. man kann eine überladene Variante für die komplexen Zahlen definieren:
Wir brauchen dazu eine Funktion add() mit zwei komplexen Operanden.
{
return(Complex(a.re+b.re, a.im+b.im));
}
Dann kann man schreiben:
Complex r = add(z1, z2);
Im Umkehrschluss gilt aber auch, dass man Operatoren in C++ beliebig überladen kann, da sie nur eine abgekürzte Schreibweise fuer überladbare Funktionen darstellen.
Der + Operator arbeitet normalerweise mit Ganzzahl- oder Fließkommazahlen. D.h. es gibt überladene globale Operator-Funktionen die der Addition der jeweiligen Operandentypen entsprechen:
double operator + (double a, double b);
Selbiges gilt für alle arithmetischen Operatoren wie + - * / += etc.
Nun wäre es wünschenswert, auch zwei komplexe Zahlen mit dem + Operator addieren zu können.
Complex r = z1 + z2;
Dazu ist es erforderlich den + Operator für die komplexen Zahlen zu überladen:
{
return(Complex(a.re+b.re, a.im+b.im));
}
Dann schreibt man:
anstelle von
Ersteres ist die sog. Infix Notation (“Dazwischen-Schreibweise”)- letzteres die Prefix Notation (“Davor-Schreibweise”).
← Deep Copy | ● | Operatorliste →