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