Grenzen der Freundschaft (1/2)

Der Freundschaft sind in C++ -- wie im richtigen Leben ja auch -- einige Grenzen gesetzt. Oben haben wir bereits eine Grenze der Gestalt kennengelernt, daß die Zugriffsrechte zunächst nur einseitig vergeben werden.
Dieses Vorgehen ist aus einem einleuchtenden Grund auch sinnvoll: Angenommen, es existiert bereits eine Klasse X, und eine Klasse Y soll neu definiert werden. Wäre die Freundschaftsbeziehung zweiseitig, so könnte sich die Klasse Y durch

  class Y {
      friend class X;
      // ...
  }

einfach die direkten Zugriffsrechte auf Elemente der Klasse X sichern (ohne X überhaupt zu fragen, ob es Y zum Freund haben will!). In C++ ist es also nicht möglich, sich selbstständig zum Freunde zu erklären, es müßte dazu schon die Deklaration der ursprünglichen Klasse geändert werden ("Man sucht sich seine Freunde ja schon noch gerne selber aus").

Zudem ist die Freundesbeziehung nicht transitiv, wie das Beispiel auf der folgenden Seite andeutet.