Maison > développement back-end > C++ > le corps du texte

Comment accéder aux fonctions Friend définies dans une classe en C ?

Barbara Streisand
Libérer: 2024-11-06 22:22:02
original
422 Les gens l'ont consulté

How to Access Friend Functions Defined in a Class in C  ?

Accéder aux fonctions d'ami définies dans la classe

En C, les fonctions d'ami sont déclarées au sein des classes mais peuvent accéder aux membres privés et protégés de la classe. Considérez l'extrait de code suivant :

<code class="cpp">class A {
    friend void fun(A a);
    friend void fun2();
    friend void fun3();
};

void fun3() {
    std::cout << "I'm here3" << std::endl;
}</code>
Copier après la connexion

L'accès à la fonction fun(A) fonctionne correctement car elle possède un paramètre de type A, permettant à la recherche dépendante de l'argument de la localiser. Cependant, il y a un problème pour accéder aux fonctions globales fun2() et fun3().

La déclaration de fun2 au sein de la classe en fait une fonction amie mais ne la déclare pas dans la portée globale. Par conséquent, lors de l'accès à fun2() en dehors de la classe :

  • fun2(); entraîne une erreur.
  • A::fun2(); entraîne également une erreur.

Pour résoudre ce problème, l'approche correcte consiste à définir toutes les fonctions d'ami en dehors de la classe et à en faire des amis explicites de la classe :

<code class="cpp">class A {
    friend void fun(A a);
    friend void fun2();
    friend void fun3();
};

void fun(A a) { std::cout << "I'm here" << std::endl; }
void fun2() { std::cout << "I'm here2" << std::endl; }
void fun3();</code>
Copier après la connexion

Définir Les fonctions d'ami de cette façon permettent d'y accéder à la fois à l'intérieur et à l'extérieur de la classe.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal