Maison >développement back-end >C++ >Explication détaillée des fonctions amies C++ : quel est le rôle des fonctions amies dans l'héritage multiple ?
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++ 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); };
由于 data
是 Base
的私有成员,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 0Maintenant,
printData2()
peut accéder à Membre <code>données
privé dans Dérivé.
Utilisation :
🎜rrreee🎜Sortie : 🎜rrreeeCe 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!