Fonctions friend
Une fonction friend est une fonction qui n'est pas membre d'une classe mais a accès aux membres privés et protégés de cette classe. Les fonctions friend ne sont pas considérées comme des membres de classe ; ce sont des fonctions externes normales pour lesquelles des privilèges d'accès spéciaux sont accordés. Les fonctions friend ne sont pas dans la portée de la classe, et elles ne sont pas appelées via des opérateurs de sélection de membres (.et –>), sauf si elles sont membres d'une autre classe. Une fonction friend est déclarée par la classe qui accorde l'accès. La déclaration friend peut être placée n'importe où dans la déclaration de classe. Elle n'est pas affectée par les mots clés de contrôle d'accès.
L'exemple suivant présente une classe Point et une fonction friend, ChangePrivate. La fonction friend a accès aux données membres privées de l'objet Point qu'il reçoit comme paramètre.
Exemple
// friend_functions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class Point
{
friend void ChangePrivate( Point & );
public:
Point( void ) : m_i(0) {}
void PrintPrivate( void ){cout << m_i << endl; }
private:
int m_i;
};
void ChangePrivate ( Point &i ) { i.m_i++; }
int main()
{
Point sPoint;
sPoint.PrintPrivate();
ChangePrivate(sPoint);
sPoint.PrintPrivate();
}