Wir implementieren obige CVector-Klasse mit weiteren Operatoren:
Bemerkung: insbesondere auch die Operatoren ++ und - - können überladen werden, den Unterschied zwischen Postfix und Präfix erzeugt man durch Angabe eines ``Platzhalter'' Parameters vom Typ int beim Postfix-Operator.
Beispiel: Überladen von []
Deklaration:
class CVector {
...
double operator[](
int i
) const;
...
};
Implementierung:
double CVector::operator[](
int i
) const {
if(i<0 || i>=dimension) {
cout << "index " << i << " out of range "
<< "for dimension " << dimension << endl;
exit(1);
}
return(vector[i]);
}
Damit können wir folgendes schreiben:
CVector v; double d; ... d=v[2]; ...aber folgendes nicht:
... v[2]=17.0; ...
Wenn wir jedoch den Rückgabetyp des Operators in eine Referenz umwandeln geht dies auch! und wir können die Komponenten des Vektors setzen. Deklaration:
class CVector {
...
double& operator[](int i) const;
...
};