next up previous
Nächste Seite: Übung: Fertigstellen der Vektorklasse Aufwärts: Visual C++ Vorlesung Vorherige Seite: Wie sieht nun ein

Übung: Implementierung der Vektorklasse

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.



\fbox {\centerline{\parbox{0.9\textwidth}{
{\bfseries Regel:} Wir \uml {u}berlad...
...r sinnvoll, d.h.\ es sollte leicht
erkennbar sein, was der Operator tun soll.}}}

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;
  ...
};




1999-12-13