C++ Fonctions amies

Classes et objets C++

Une fonction amie d'une classe est définie en dehors de la classe, mais a le droit d'accéder à tous les membres privés et protégés de la classe. Bien que le prototype de la fonction amie apparaisse dans la définition de la classe, la fonction amie n'est pas une fonction membre.

Un ami peut être une fonction, appelée fonction amie ; un ami peut aussi être une classe, appelée classe amie. Dans ce cas, la classe entière et tous ses membres sont amis.

Pour déclarer une fonction comme amie d'une classe, vous devez utiliser le mot-cléfriendavant le prototype de la fonction dans la définition de la classe, comme montré ci-dessous :

class Box
{
   double width;
public:
   double length;
   friend void printWidth( Box box );
   void setWidth( double wid );
};

Pour déclarer toutes les fonctions membres de la classe ClassTwo comme amies de la classe ClassOne, vous devez placer la déclaration suivante dans la définition de la classe ClassOne :

friend class ClassTwo;

Veuillez regarder le programme suivant :

Exemple

#include <iostream> using namespace std; class Box { double width; public: friend void printWidth( Box box ); void setWidth( double wid ); }; // Définition de la fonction membre void Box::setWidth( double wid ) { width = wid; } // Veuillez noter : printWidth() n'est pas une fonction membre d'une classe quelconque void printWidth( Box box ) { /*Comme printWidth() est une fonction amie de Box, elle peut accéder directement à n'importe quel membre de la classe*/ cout << "Largeur de la boîte : " << box.width <<endl; } // La fonction principale du programme int main( ) { Box box; // Utilisation d'une fonction membre box.setWidth(10.0); // Utiliser la fonction amie pour afficher la largeur printWidth( box ); return 0; }

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

Width of box : 10

Classes et objets C++

autres extensions