Nous avons vu quune classe avait généralement des membres privés, et que ceux-ci nétaient pas accessibles par des fonctions non membres. Cette restriction peut sembler lourde, mais elle est à la base même de la protection des données qui fait une grande partie de la puissance de la programmation par objets en général, et de C++ en particulier.
Dans certains cas, cependant, on souhaite pouvoir utiliser une fonction qui puisse accéder aux membres dune classe, sans toutefois nécessairement disposer dune instance de cette classe par laquelle lappeler.
Une première possibilité consiste à utiliser un membre statique. Si lon écrit par exemple :
class exemple { // parties privées... public : static exemple* f(void); // ... };
il est possible dappeler la fonction f
sans passer par un membre, comme ceci :
exemple *p = exemple::f();
Cependant cette notation, si elle a lavantage de la clarté, est assez lourde. Cest pourquoi le langage fournit les fonctions amies pour résoudre ce problème.
![]() | ![]() | Suivant ![]() |