Maison >développement back-end >C++ >Quel impact les fonctions amies ont-elles sur l'héritage de classe ?
Héritage des fonctions ami Lorsqu'une sous-classe hérite d'une classe avec des fonctions ami : La sous-classe ne peut pas hériter de la fonction ami. Les fonctions amies de la classe parent peuvent accéder aux membres privés de la classe enfant. Les fonctions amies d'une sous-classe ne peuvent pas accéder aux membres privés de la classe parent.
L'impact des fonctions ami sur l'héritage de classe
Avant-propos
Une fonction ami est une fonction C++ spéciale qui peut accéder aux membres privés de la classe en dehors de la portée de la classe. En matière d’héritage de classe, il est crucial de comprendre le comportement des fonctions amies.
Fonctions ami et héritage
Lorsqu'une sous-classe hérite d'une classe qui a des fonctions ami, les règles suivantes s'appliquent :
Cas pratique
Considérons l'exemple de code suivant :
#include <iostream> class Base { friend void print(Base& b); // 父类友元函数 private: int x; }; class Derived : public Base { friend void access(Derived& d); // 子类友元函数 private: int y; }; void print(Base& b) { std::cout << b.x << std::endl; } // 父类友元函数访问私有成员 x void access(Derived& d) { std::cout << d.x << " " << d.y << std::endl; } // 子类友元函数访问私有成员 x 和 y int main() { Base b; b.x = 10; print(b); // 输出:10 Derived d; d.x = 20; d.y = 30; access(d); // 输出:20 30 print(d); // 输出:20 }
Dans cet exemple :
Base
a une fonction amie print()
, qui a accès à x
membres privés. Base
有一个友元函数 print()
,它可以访问 x
私有成员。Derived
有一个友元函数 access()
,它可以访问父类私有成员 x
。Derived
的对象 d
可以被父类 Base
友元函数 print()
访问,但是无法访问父类的私有成员 x
Derived
a une fonction amie access()
, qui peut accéder au membre privé de la classe parent x
. d
de la sous-classe Derived
est accessible par la fonction amie de la classe parent Base
print()
, mais impossible d'accéder au membre privé x
de la classe parent. 🎜🎜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!