Ziel ist es hierbei, auch für den ersten Operanden eine Konstante
zuzulassen. Natürlich macht es für einige Operatoren, wie etwa dem Operator
+=, wenig Sinn, konstante Objekte zuzulassen, da ja das erste Argument (das
Objekt, für das die Elementfunktion aufgerufen wurde) auf jeden Fall
verändert werden soll. Warum aber sollte etwa c + c
mit
konstantem Objekt c
nicht zulässig sein?
Eine Konstanten-Element-Funktion wird durch den zusätzlichen Parameter const
zwischen Parameterliste und Funktionskörper deklariert:
h.re = re + c.re;
return h;
complex complex::operator + (const complex c) const
{
complex h; // Hilfsvariable;
h.im = im + c.im;
};
Man beachte bei diesem Beispiel folgendes: Es darf nun keine Referenz mehr
zurückgeliefert werden, da es sich bei dem Rückgabewert um ein
lokales Objekt handelt! Würde man eine Referenz zurückliefern,
so liefert man einen zweiten Namen für ein Objekt zurück, daß
nach Beendigung der Funktion gar nicht mehr exisitiert!
Durch die Angabe des Schlüsselwortes const wird es möglich,
Operatoren für konstante und variable Objekte unabhängig voneinander zu
implementieren,
da es sich zwar um den gleichen Operator, aber um verschiedene Funktionen
handelt. Im folgenden Abschnitt wird hierauf näher eingegangen.