complex
zwar
complex operator+(double);
deklarieren und damit Ausdrücke der Form c + 2.76
ermöglichen,
wobei c
ein Objekt der Klasse complex
sei.
Was ist aber mit dem Ausdrcuk 2.76 + c
?
Dieser ist weiterhin nicht definiert. Der Grund liegt darin, daß
der erste Operand vom Typ double
ist und damit die Deklaration
der Klasse des elementaren Typs nötig wäre, um eine Operation
double + complex
zu definieren. Diese Erweiterung elementarer Typen ist
jedoch nicht zulässig!
Damit gilt die gewünschte Kommutativität arithmetischer Ausdrücke,
hier c + d = d + c,
zunächst einmal nicht, da der rechte
Ausdruck nicht definiert ist.
Auch dieses Problem läßt sich über die Deklaration
einer (globalen) friend-Funktion
friend complex operator+(double, complex&);
innerhalb der Klassendeklaration der Klasse complex
umgehen.