Maison > développement back-end > C++ > Comment accéder aux fonctions d'ami définies au sein d'une classe ?

Comment accéder aux fonctions d'ami définies au sein d'une classe ?

Susan Sarandon
Libérer: 2024-11-05 15:45:02
original
791 Les gens l'ont consulté

How to Access Friend Functions Defined Within a Class?

Accès aux fonctions d'ami définies dans une classe

Lorsque vous travaillez avec des fonctions d'ami, il est essentiel de comprendre comment elles sont définies et accessibles. Comme les fonctions ami ne sont pas membres d'une classe, y accéder en dehors de la classe peut nécessiter des considérations particulières.

Dans l'extrait de code fourni :

<code class="cpp">class A {

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

Les fonctions ami fun() et fun3( ) sont définis dans la classe mais ne sont pas déclarés dans la portée globale. Alors que fun() est accessible directement à l'aide de la recherche dépendante de l'argument (ADL) en raison de l'argument de type A, fun2() n'est pas accessible sans déclaration dans la portée globale.

Pour accéder correctement à fun2() , elle doit être déclarée globalement en plus d'être définie comme une fonction amie au sein de la classe :

<code class="cpp">class A {

public:
    friend void fun(A a){std::cout << "Im here" << std::endl;}
    friend void fun2();
    friend void fun3();
};

void fun2(){ std::cout << "Im here2" << std::endl; }</code>
Copier après la connexion

Dans cette version modifiée, fun2() est accessible en dehors de la classe comme une fonction ordinaire.

Cependant, il est recommandé de définir les fonctions ami de la manière habituelle, en dehors de la classe mais déclarées comme amis :

<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

Cette approche garantit que toutes les fonctions ami sont définies et déclarées correctement, les rendant accessibles et utilisable comme prévu.

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