Friend-Funktionen (Freunde einer Klasse)

Das objektorientierte Programmieren basiert unter anderem auf dem Konzept der Datenkapselung (encapsulation), durch welches der Zugriff auf bestimmte Dinge bzw. Objekte eingeschränkt wird. Ziel dabei ist es, den Zugriff auf das Objekt nur über wohldefinierte Schnittstellen zu erlauben, daß also insbesondere für "Außenstehende" kein direkter Zugriff auf die private-/protected-Elemente einer Klasse möglich ist.
Häufig stellen diese Vorschriften, die vorrangig dem Informationsschutz dienen, eine zu starke Einschränkung dar, d.h. man wünscht sich ab und zu, durch Funktionen, die keine Elementfunktionen der Klasse sind, auf Elemente zugreifen zu können, die nicht als public definiert wurden. Natürlich soll dies nicht völlig wahllos und unkontrolliert geschehen, man möchte vielmehr einen Einfluß darauf haben, wer -- d.h. welche Klasse -- denn nun auf die private-Elemente zugreifen darf.
Diesem Ziel dient der sogenannte friend-Mechanismus (Freund). Das dabei auftretende Schlüsselwort friend nimmt in C++ eine immens wichtige Rolle ein, wie wir im folgenden noch sehen werden.

Der Friend-Abschnitt behandelt folgende Themen: