Maison >développement back-end >C++ >Comment déterminer si une fonction est une fonction amie ?

Comment déterminer si une fonction est une fonction amie ?

PHPz
PHPzoriginal
2024-04-15 15:09:01518parcourir

Comment déterminer si une fonction est une fonction ami : utilisez le mot-clé ami dans la déclaration de la fonction. Les qualificatifs de nom de classe ne sont pas requis dans les déclarations de fonction.

Comment déterminer si une fonction est une fonction amie ?

Comment déterminer si une fonction est une fonction ami

Une fonction ami ne fait pas partie d'une classe, mais elle peut toujours accéder aux membres privés de la classe. Les fonctions d'ami peuvent être déterminées des manières suivantes :

  1. Utilisez le mot-clé friendfriend
class MyClass {
private:
    int data;
    friend void printData(const MyClass& obj);
};

在上面的示例中,printData() 函数是一个友元函数,因为其声明中使用了关键字 friend

  1. 函数声明中不需要类名限定符

友元函数可以在类的外部声明,无需使用类名限定符:

class MyClass {
private:
    int data;
};

void printData(const MyClass& obj); // 友元函数声明
  1. 实战案例

考虑以下示例,展示如何使用友元函数访问类的私有成员:

class MyClass {
private:
    int data = 10;
    
    friend std::ostream& operator<<(std::ostream& os, const MyClass& obj) {
        os << "data: " << obj.data;
        return os;
    }
};

int main() {
    MyClass obj;
    std::cout << obj << std::endl; // 输出:data: 10
    
    return 0;
}

在这个示例中,operatorrrreee

dans la déclaration de fonction. Dans l'exemple ci-dessus, printData. () La fonction est une fonction ami car le mot-clé ami est utilisé dans sa déclaration. 🎜
    🎜🎜Aucun qualificatif de nom de classe n'est requis dans la déclaration de fonction🎜
🎜Les fonctions Friends peuvent être déclarées en dehors de la classe sans utiliser le qualificatif de nom de classe : 🎜rrreee🎜🎜Cas pratique🎜🎜Considérez l'exemple suivant montrant comment utiliser les fonctions d'ami pour accéder aux membres privés d'une classe : 🎜rrreee🎜Dans cet exemple, operator est une fonction amie qui est utilisée pour surcharger l'opérateur de sortie afin de personnaliser la façon dont les informations de la classe d'impression sont imprimées. 🎜

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!

Déclaration:
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