Weiteres Einsatzgebiet: Sicherung der Kommutativität

Eine weiteres, häufiges Einsatzgebiet der friend-Deklaration ist eine Operator-Funktion, deren erstes Element ein elementarer Typ ist.
Z.B. kann man für die Klasse 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.