friend functions c
En savoir plus sur les fonctions Friend en C ++ avec des exemples.
C ++ prend en charge la fonction d'encapsulation dans laquelle les données sont regroupées avec les fonctions qui y fonctionnent pour former une seule unité. En faisant cela, C ++ garantit que les données ne sont accessibles que par les fonctions qui y opèrent et par personne en dehors de la classe.
C'est l'une des caractéristiques distinctives de C ++ qui préserve les données et les empêche de fuir vers le monde extérieur.
=> Lisez la série de formations Easy C ++.
Mais dans certaines applications en temps réel, nous pouvons parfois vouloir accéder aux données en dehors de l'unité fournie. Par exemple, une classe extérieure peut souhaiter accéder aux données privées et protégées d'une classe C ++.
C ++ fournit une possibilité d'accéder à des données privées et protégées au moyen d'une fonction spéciale appelée fonction ou classe «ami» dont nous parlerons ici dans ce tutoriel.
Ce que vous apprendrez:
- Fonction Friend en C ++
- Exemple de fonction d'ami
- Classe d'amis
- Avantages / inconvénients de la fonction ami
- Conclusion
- lecture recommandée
Fonction Friend en C ++
Une fonction ami en C ++ est une fonction précédée du mot clé «ami». Lorsque la fonction est déclarée en tant qu'ami, elle peut accéder aux données privées et protégées membres de la classe.
Une fonction friend est déclarée à l'intérieur de la classe avec un mot clé friend précédant comme indiqué ci-dessous.
class className{ …… friend returnType functionName(arg list); };
Comme indiqué ci-dessus, la fonction friend est déclarée dans la classe dont les données membres privées et protégées doivent être accédées. La fonction peut être définie n'importe où dans le fichier de code et nous n'avons pas besoin d'utiliser le mot-clé friend ou l'opérateur de résolution de portée.
Il y a quelques points à retenir lors de l'implémentation des fonctions friend dans notre programme:
- Une fonction friend peut être déclarée dans la section privée ou publique de la classe.
- Elle peut être appelée comme une fonction normale sans utiliser l'objet.
- Une fonction d'ami n'est pas dans le champ d'application de la classe, dont c'est un ami.
- Une fonction friend n'est pas appelée à l'aide de l'objet de classe car elle n'est pas dans la portée de la classe.
- Une fonction amie ne peut pas accéder directement aux données privées et protégées membres de la classe. Il doit utiliser un objet de classe, puis accéder aux membres à l'aide de l'opérateur point.
- Une fonction ami peut être une fonction globale ou un membre d'une autre classe.
Exemple de fonction d'ami
Implémentons un exemple de programmation pour mieux comprendre l'utilisation de la fonction Friend.
#include #include using namespace std; class sample{ int length, breadth; public: sample(int length, int breadth):length(length),breadth(breadth) {} friend void calcArea(sample s); //friend function declaration }; //friend function definition void calcArea(sample s){ cout<<'Area = '< Production:
Superficie = 150
Dans le programme ci-dessus, nous avons un échantillon de classe avec des membres privés de longueur et de largeur. Nous avons un constructeur public qui initialise les valeurs de longueur et de largeur. Ensuite, nous avons une fonction amie «calcArea» qui calcule la surface en prenant en compte la longueur et la largeur.
Notez que calcArea est une fonction amie et ne fait pas partie de la classe. Dans la fonction principale, après avoir créé un objet de l'échantillon de classe, nous le passons à la fonction calcArea qui calcule la surface et affiche la valeur.
Classe d'amis
Tout comme les fonctions d'amis, nous pouvons également avoir une classe d'amis. La classe Friend peut accéder aux membres privés et protégés de la classe dont elle est amie.
class A{ …… friend class B; }; class B{ …….. };
Comme illustré ci-dessus, la classe B est un ami de la classe A. Ainsi, la classe B peut accéder aux membres privés et protégés de la classe A.
Mais cela ne signifie pas que la classe A peut accéder aux membres privés et protégés de la classe B. Notez que l'amitié n'est pas réciproque à moins que nous ne le fassions.
De même, l'amitié de la classe n'est pas héritée. Cela signifie que la classe B étant un ami de la classe A, ce ne sera pas un ami des sous-classes de la classe A.
Prenons un exemple de programmation pour démontrer la classe ami.
#include #include using namespace std; class Area{ int length,breadth,area; public: Area(int length,int breadth):length(length),breadth(breadth) {} void calcArea(){ area = length * breadth; } friend class printClass; }; class printClass{ public: void printArea(Area a){ cout<<'Area = '< Production:
Superficie = 150
Avantages et inconvénients des bases de données relationnelles ou non relationnelles
Dans ce programme, nous avons deux classes. La classe «Zone» qui calcule la zone en utilisant les paramètres de longueur et de largeur. Notez que les champs, la zone, la longueur et la largeur sont tous des membres privés de la classe Area.
La classe suivante qui est utilisée est la «printClass» qui imprime la zone calculée par une fonction calcArea dans la classe Area. Comme les membres sont privés, nous devons faire de printClass un ami de la classe Area.
Une fois cela fait, dans la fonction principale, nous créons un objet de la classe Area, calculons la zone et passons l'objet à la fonction printArea de la classe printClass pour afficher la zone.
Avantages / inconvénients de la fonction ami
Un avantage de la fonction ou de la classe friend est que nous pouvons accéder aux données privées et protégées de la classe. Par exemple, si nous implémentons une liste liée, alors nous pouvons faire de la classe de liste liée un ami de la classe de nœuds et accéder à ses données car la liste liée se compose de nœuds.
Ainsi, dans une certaine situation, l'utilisation d'une fonction ou d'une classe ami peut s'avérer avantageuse. Cependant, il présente également certains inconvénients.
L'une des caractéristiques distinctives du C ++ est l'encapsulation, c'est-à-dire le regroupement de données et de fonctions fonctionnant ensemble sur ces données afin qu'aucune fonction ou classe extérieure ne puisse accéder aux données. Mais en permettant aux fonctions ou à la classe d'amis d'accéder aux membres privés d'une autre classe, nous compromettons en fait la fonctionnalité d'encapsulation.
Afin d'éviter cela, nous devons faire attention à l'utilisation des fonctions ou des classes d'amis. Nous devons nous assurer de ne pas utiliser trop de fonctions et de classes amis dans notre programme, ce qui compromettrait totalement l'encapsulation.
Conclusion
Ceci conclut notre tutoriel sur la fonction et les classes friend en C ++.
Les lecteurs doivent être très prudents lors de l'utilisation des classes et des fonctions d'amis comme si cela pouvait agir comme une aubaine pour le programmeur, il doit également être utilisé avec prudence car une utilisation excessive des fonctions et des classes d'amis peut compromettre la fonctionnalité d'encapsulation POO dans notre programme.
Dans notre prochain didacticiel, nous en apprendrons davantage sur les fonctions statiques en C ++.
=> Visitez ici pour apprendre le C ++ à partir de zéro.
lecture recommandée