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

Auteur: Laura McKinney
Date De Création: 1 Avril 2021
Date De Mise À Jour: 13 Peut 2024
Anonim
Différence entre la fonction d'ami et la classe d'ami - La Technologie
Différence entre la fonction d'ami et la classe d'ami - La Technologie

Contenu


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.

le fonctionnalité ami qu’elles soient utilisées par fonction ou par classe peuvent avoir un impact négatif sur le cadre orienté objet car elles affaiblissent la encapsulation qui est contre le orienté objet paradigme. C’est la raison pour laquelle la fonction ami doit être utilisée à bon escient, sinon elle pourrait Pause le masquage de données du code.

Cette fonctionnalité ami n'est ni commutatif et ni transitif. 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, cela n'implique pas que X est un ami de Z.


    1. Tableau de comparaison
    2. Définition
    3. Différences Clés
    4. Conclusion

Tableau de comparaison

Base de comparaisonFonction d'amiClasse d'ami
De baseC'est 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é friend 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

le fonction ami est utilisé pour accéder aux membres privés et protégés d'une classe en autorisant l'accès à la fonction non membre. 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 ne puisse pas être présent dans la fonction friend, ce qui signifie qu'il ne peut pas être déclaré comme statique et extern.

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

#comprendre using namespace std; class first {int data; public: first (int i): données (i) {} display void ami (const first & a); }; void display (const first & a) {cout << "data =" <using namespace std; classe premier {// Déclarer un ami classe ami classe second; public: First (): a (0) {} void () {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 () First obj1; Deuxième obj2; obj1. (); obj2.change (obj1, 5); obj1. (); // Sortie Le résultat est 0 Le résultat est 5

  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 en 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 l'accès 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.