Maison  >  Article  >  développement back-end  >  Explication détaillée des fonctions amies C++ : quel est le rôle des fonctions amies dans l'héritage multiple ?

Explication détaillée des fonctions amies C++ : quel est le rôle des fonctions amies dans l'héritage multiple ?

WBOY
WBOYoriginal
2024-04-29 18:39:01852parcourir

Les fonctions Friends permettent aux fonctions non membres d'accéder aux membres privés et de jouer un rôle dans l'héritage multiple, permettant aux fonctions de classe dérivées d'accéder aux membres privés de la classe de base.

C++ 友元函数详解:友元函数在多继承中的作用?

C++ Explication détaillée des fonctions ami : Le rôle des fonctions ami dans l'héritage multiple

Introduction aux fonctions ami

Une fonction ami est une fonction spéciale qui est autorisée à accéder aux membres privés, et Non L'objet de cette classe est requis. Il est souvent utilisé pour permettre à des fonctions non membres d'accéder à des données privées.

Syntaxe :

class ClassName {
    ... // 类成员
    friend FunctionName;
};

Le rôle des fonctions amies dans l'héritage multiple

Dans l'héritage multiple, une classe dérivée peut hériter des données membres et des méthodes de plusieurs classes de base. Si une fonction d'une classe dérivée doit accéder à un membre privé de la classe de base, la fonction peut être déclarée comme fonction amie.

Cas pratique

Supposons que nous ayons une classe Base et une classe dérivée Derived qui hérite de Base : Base 类和一个从 Base 继承的派生类 Derived

class Base {
private:
    int data;
};

class Derived : public Base {
public:
    void printData() {
        std::cout << data << std::endl;
    }
    friend void printData2(Derived& obj);
};

由于 dataBase 的私有成员,Derived 中的 printData() 函数无法直接访问它。因此,我们将 printData2() 函数声明为 Derived 的友元函数:

void printData2(Derived& obj) {
    std::cout << obj.data << std::endl;
}

现在,printData2() 可以访问 Derived 中私有的 data

int main() {
    Derived obj;
    obj.printData();
    printData2(obj);
}

En raison de data est un membre privé de Base et n'est pas accessible directement par la fonction printData() dans Derived. Par conséquent, nous déclarons la fonction printData2() comme fonction amie de Derived :

0
0
Maintenant, printData2() peut accéder à Membre <code>données privé dans Dérivé.

Utilisation :

🎜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!

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