Man kann innerhalb einer Klasse eine Funktion oder eine andere Klasse deklarieren, und mit dem Schlüsselwort friend dabei zulassen, daß die friend-Funktion beziehungsweise alle Elementfunktionen der friend-Klasse freien Zugriff auf alle Elemente der aktuellen Klasse haben, gleichgültig ob die Elemente im private:-, protected:- oder public:-Teil stehen.
Ob die friend-Deklaration selbst im private:-, protected:- oder public:-Bereich steht, ist belanglos; sie selbst gilt immer als public.
Beispiel für eine friend-Funktion:
class A { friend void meinKumpel( A &objekt ); protected: int i; public: //... }; void meinKumpel( A &objekt ) { // obwohl A::i protected ist, ist hier (dank friend) // ein Zugriff zulässig: objekt.i = 25; } int main( int nargs, char **args ) { A Variable; meinKumpel( Variable ); }