Maison > développement back-end > C++ > Explication détaillée des fonctions amies C++ : Comment utiliser les fonctions amies pour un accès inter-classes ?

Explication détaillée des fonctions amies C++ : Comment utiliser les fonctions amies pour un accès inter-classes ?

王林
Libérer: 2024-04-29 18:51:01
original
1158 Les gens l'ont consulté

Les fonctions Friend en C++ permettent aux fonctions non membres d'accéder aux membres privés et protégés d'une classe, ce qui est très utile dans l'implémentation d'opérations inter-classes, d'ADT et de tests unitaires : Déclarer des fonctions amies : utilisez le mot-clé ami pour déclarer une fonction en dehors de la classe. classe. Utiliser les fonctions amies : accédez directement à un membre privé d’une classe comme s’il s’agissait d’une fonction membre. Cas pratique : utilisez la fonction ami pour obtenir des informations privées sur l’âge sans exposer l’attribut age.

C++ 友元函数详解:如何使用友元函数进行跨类访问?

Explication détaillée des fonctions amies C++ : faire de l'accès entre classes une réalité

En programmation C++, les fonctions amies sont un mécanisme puissant qui permet aux fonctions extérieures à une classe d'accéder aux membres privés et protégés de la classe. Ceci est très utile dans certains cas, par exemple :

  • Implémenter des fonctions non membres pour opérer sur certains attributs de classe.
  • Implémentez des types de données abstraits (ADT) dans toutes les classes.
  • Dans le cadre de tests unitaires, utilisez les fonctions amies pour contourner les restrictions d'accès afin de tester les méthodes privées.

Déclaration de la fonction ami

class MyClass {
public:
    // ...
private:
    // ...
    friend void print_my_class(const MyClass&); // 声明友元函数
};
Copier après la connexion

Le code ci-dessus déclare print_my_class comme fonction ami de MyClass. Cela signifie que la fonction print_my_class peut accéder aux membres privés et protégés de MyClass. print_my_class 作为 MyClass 的友元函数。这意味着 print_my_class 函数可以访问 MyClass 的私有和受保护成员。

友元函数的使用

要使用友元函数,只需在友元函数中直接访问类的私有成员即可:

void print_my_class(const MyClass& obj) {
    std::cout << "Private member: " << obj.private_member << std::endl;
    std::cout << "Protected member: " << obj.protected_member << std::endl;
}
Copier après la connexion

实战案例

假设我们有一个 Person 类,表示一个人,它具有一个私有的 age 成员。我们想要创建一个友元函数 get_age 来获取 Person 对象的年龄:

class Person {
public:
    // ...
private:
    int age;
    friend int get_age(const Person&); // 声明友元函数
};

int get_age(const Person& person) {
    return person.age;
}
Copier après la connexion

main 函数中,我们创建一个 Person 对象并使用友元函数 get_age

Utilisation des fonctions ami

Pour utiliser les fonctions ami, il suffit d'accéder aux membres privés de la classe directement dans la fonction ami : 🎜
int main() {
    Person person(25);
    std::cout << "Age: " << get_age(person) << std::endl;
    return 0;
}
Copier après la connexion
🎜Cas pratique🎜🎜Supposons que nous ayons une Personne Une classe qui représente une personne et a un membre privé age. Nous voulons créer une fonction ami get_age pour obtenir l'âge de l'objet Person : 🎜
Age: 25
Copier après la connexion
🎜Dans la fonction main, nous créons un Person et utilisez la fonction ami get_age pour accéder à ses membres privés : 🎜rrreee🎜Sortie : 🎜rrreee

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal