friend
Das C++-Schlüsselwort friend gewährt einer anderen Klasse oder Funktion
Zugriff auf das ansonsten geschützte Innenleben (private, protected) einer
Klasse.
#include <iostream>
#include <conio.h>
using namespace std;
class X
{
private:
int a_;
public:
X(int a) : a_(a){}
int getA() const { return a_; }
friend int getzahl_direct(X& x);
};
int getzahl(X& x) { return x.getA(); }
int getzahl_direct(X& x) { return x.a_; }
int main()
{
X x(5);
cout << x.getA() << " " << getzahl(x) << " " << getzahl_direct(x) << endl;
getch();
}
Eine wichtige Frage besteht darin, ob durch die Verwendung von friend gegen
das Prinzip der Kapselung (information hiding) verstoßen wird. Die Antwort
ist nein! Bei richtiger Anwendung kann die Kapselung sogar verbessert
werden.