Exemple:
class Point {
friend float
f0( Point &p);
friend
class pentagone;
private:
float
x,y;
public:
void
setx( float x0);
void
sety( float y0);
void
translate( float x0, float y0);
//
} ;
float
f0(Point &p) {
return
(p.x+p.y) ;
}
Une fonction
(ou une classe entière)
déclarée
friend d'une certaine classe (ici Point) a accés
à tous
les
champs (y compris privés) de la classe Point en question.
Inutile de
préciser que ce n'est pas
trés
compatible avec l'idée d'
encapsulation
,
et qu'il ne faut pas abuser de cette
possibilité.
Note:
les amis de vos amis ne sont pas vos
amis.