Maison >développement back-end >C++ >Fonction ami vs fonction membre pour l'opérateur
Opérateur<< en C : Fonction Ami vs Fonction Membre
En C, l'opérateur<< peut être définie soit comme une fonction amie, soit comme une fonction membre. Cet article explore la justification du choix de l'un plutôt que de l'autre dans des scénarios spécifiques.
Approche de la fonction amie pour l'opérateur<<
Lors de la définition de l'opérateur<< en tant que fonction ami, la syntaxe implique généralement ce qui suit :
<🎝🎝🎝>Cette approche est recommandée lorsque la comparaison des relations implique l'examen des membres privés de la classe. Étant donné que les fonctions amies ont accès aux membres privés d'une classe, elles peuvent effectuer la comparaison directement.
Approche des fonctions membres pour l'opérateur<<
Dans cette approche, l'opérateur≪≪ est défini comme une fonction membre de la classe :
<🎝🎝🎝>Cette approche est appropriée lorsque la comparaison implique des données accessibles au public ou des opérations simples. Cependant, elle présente une limitation clé : si la comparaison nécessite un accès aux membres privés, l'approche de fonction membre ne peut pas être utilisée.
Comparaison des approches
Streaming Opérations :
Lors de la définition de l'opérateur<< pour les opérations de streaming, les fonctions amies et les fonctions membres peuvent être utilisées. Cependant, les fonctions amies doivent être utilisées si l'opération de streaming doit modifier l'objet de flux (par exemple, en ajoutant des sauts de ligne).
Opérateurs d'égalité et de relation :
Pour les opérateurs tels que = =, !=, <, >, etc., il est préférable de les définir en tant que fonctions membres. Cette approche permet une comparaison facile des membres privés au sein de la classe. De plus, cela simplifie le code en évitant le besoin de fonctions amies supplémentaires.
Exemple
Considérons l'exemple suivant d'une classe Paragraph avec une méthode to_str() :
Fonction Ami Approche :
Approche de la fonction membre :
Dans ce cas, l'approche de la fonction ami est privilégiée car elle permet d'accéder au privé membre m_para pour les opérations de streaming.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!