next up previous
Nächste Seite: Wie sieht nun ein Aufwärts: Visual C++ Vorlesung Vorherige Seite: Kommen wir an das

Können wir auch binäre Operatoren mit anderen linken Operanden schreiben?

Ja! Da es häufig sinnvoll ist, solche Operatoren zur Verfügung zu haben (z.B. skalare Multiplikation von links) wurde das Schlüsselword friend in C++ aufgenommen.

Als friend in der Klasse deklarierte Funktionen haben das Recht auf private Komponenten zuzugreifen!

Beispiel der Ein- und Ausgabe über die Standard-Ströme:

Deklaration:


class CVector {
  ...
  friend ostream& operator<<(          // output to stream
    ostream&       os,
    const CVector& v
  );
  friend istream& operator>>(          // input from stream
    istream& is,
    CVector& v
  );
  ...
};

Implementierung:


ostream& operator<<(
  ostream&       os,
  const CVector& v
) {
  os << "( ";
  for(int i=0;i<v.dimension;i++) {
    os << v.vector[i] << " ";
  }
  os << ") " << endl;
  return(os);
}

istream& operator>>(
  istream& is,
  CVector& v
) {
  cout << "vector(" << v.dimension << ") = ";
  for(int i=0;i<v.dimension;i++) {
    is >> v.vector[i];
  }
  return(is);
}

Man beachte:



\fbox {\centerline{\parbox{0.9\textwidth}{
{\bfseries Regel:} Wir verwenden {\tt...
...hl\uml {u}berlegt, da sie
Zugriff auf private Komponenten einer Klasse haben.}}}


next up previous
Nächste Seite: Wie sieht nun ein Aufwärts: Visual C++ Vorlesung Vorherige Seite: Kommen wir an das

1999-12-13