Recommandé, 2024

Choix De L'Éditeur

Différence entre la fonction d'ami et la classe d'ami

La fonction Friend et la classe friend sont les techniques utilisées pour accéder aux membres privés d'une classe à l'aide du mot clé friend. La différence commune entre la fonction friend et la classe friend est que, lorsque la fonction friend est utilisée, les membres de la classe privée sont accessibles, mais que dans la classe friend, seuls les noms de la classe friend sont accessibles, et non les membres privés de la classe.

La fonctionnalité friend, qu’elle soit utilisée par une fonction ou une classe, peut avoir un impact négatif sur le cadre orienté objet, car elle affaiblit l’ encapsulation qui va à l’encontre du paradigme orienté objet. C’est la raison pour laquelle la fonctionnalité friend doit être utilisée à bon escient, faute de quoi les données masquées par le code pourraient être masquées.

Cette fonctionnalité ami n’est ni commutative ni transitive . X est un ami de Y ne déduit pas que Y est aussi un ami de X. Si X est un ami de Y et Y est un ami de Z, n'implique pas que X est un ami de Z.

Tableau de comparaison

Base de comparaisonFonction d'amiClasse d'ami
De baseIl s’agit d’une fonction utilisée avec un mot clé friend pour accorder à une fonction non membre l’accès aux membres privés d’une classe.C'est une classe utilisée avec un mot clé ami pour accéder aux membres privés d'une autre classe.
Déclaration à termeDoit être utilisé.Pas obligatoire.
UtilisationUne fonction ami peut être utilisée dans certaines situations de surcharge de l'opérateur.Une classe d'amis peut être utilisée lorsqu'une classe est créée au sommet d'une autre classe.

Définition de la fonction d'ami

La fonction ami permet d’accéder aux membres privés et protégés d’une classe en permettant à la fonction non membre d’y accéder. Dans ce type de fonction, un mot clé ami est utilisé avant le nom de la fonction au moment de la déclaration. Certaines conditions restrictives s'appliquent à la fonction ami. La première condition est que la fonction friend ne soit pas héritée par une classe enfant. La deuxième condition est que le spécificateur de classe de stockage puisse ne pas être présent dans la fonction friend, ce qui signifie qu'il ne peut pas être déclaré statique et extern.

La fonction ami n'est pas appelée avec un objet appelant de la classe. Les exemples de fonction friend sont: une fonction globale, une fonction membre d'une classe, un modèle de fonction peut être une fonction ami. Comprenons-le à l'aide d'un exemple.

 #include using namespace std; class first {int data; public: premier (int i): données (i) {} affichage vide de l'ami (const first & a); }; void display (const first & a) {cout << "data =" < 

Définition de classe d'amis

Semblable à la fonction ami, nous pouvons faire d’une classe l’ami d’une autre classe appelée classe ami . Pour que la classe friend puisse accéder aux membres privés définis dans l’autre classe. Il est important de se rappeler que la classe friend ne peut accéder qu'aux noms définis dans l'autre classe au lieu d'en hériter. Précisément, les membres de la première classe ne peuvent devenir membres de la classe des amis. Ces classes d'amis sont rarement utilisées.

La classe d'amis peut être déclarée dans plusieurs classes. Elle est considérée comme une méthode alternative courte pour la fonction ami, car elle permet de créer une classe d'amis pouvant accéder à l'ensemble des données membres et à la fonction au lieu de créer plusieurs fonctions ami.

 #include using namespace std; classe premier {// Déclarer un ami classe ami classe deuxième; public: First (): a (0) {} void print () {cout << "Le résultat est" << a << endl; } private: int a; }; classe Second {public: changement de vide (First & yclass, int x) {yclass.a = x; }}; int main () // Sortie Le résultat est 0 Le résultat est 5 

Différences clés entre la fonction d'ami et la classe d'ami

  1. La fonction ami est une fonction capable d'accéder aux membres privés et protégés d'une classe. En revanche, une classe d'amis est une classe qui aide à accéder aux membres privés d'une classe.
  2. Une fonction ami est déclarée en incluant son prototype dans la classe, précédez-la avec le mot-clé ami. De même, une classe d'amis est également définie à l'aide du mot clé friend.
  3. La déclaration forward est utilisée en cas de fonction friend par opposition, il n'est pas nécessaire de l'utiliser dans la classe friend.

Conclusion

Une fonction ami est requise lorsqu'une fonction doit accéder à deux classes indépendantes ou plus, membres internes. D'autre part, une classe d'amis est nécessaire lorsqu'une classe nécessite d'accéder aux membres d'une autre classe. Lorsqu'une fonction à plusieurs membres doit être un ami de cette fonction, il est préférable d'utiliser la classe friend.

Top