Heim >Backend-Entwicklung >C++ >Welchen Einfluss haben Friend-Funktionen auf die Klassenvererbung?
Vererbung von Friend-Funktionen Wenn eine Unterklasse eine Klasse mit Friend-Funktionen erbt: Die Unterklasse kann die Friend-Funktion nicht erben. Freundfunktionen der übergeordneten Klasse können auf private Mitglieder der untergeordneten Klasse zugreifen. Freundfunktionen einer Unterklasse können nicht auf private Mitglieder der übergeordneten Klasse zugreifen.
Der Einfluss von Friend-Funktionen auf die Klassenvererbung
Vorwort
Eine Friend-Funktion ist eine spezielle C++-Funktion, die auf private Mitglieder der Klasse außerhalb des Geltungsbereichs der Klasse zugreifen kann. Wenn es um die Klassenvererbung geht, ist es wichtig, das Verhalten von Friend-Funktionen zu verstehen.
Friend-Funktionen und Vererbung
Wenn eine Unterklasse eine Klasse mit Friend-Funktionen erbt, gelten die folgenden Regeln:
Praktischer Fall
Betrachten Sie den folgenden Beispielcode:
#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 }
In diesem Beispiel:
Base
hat eine Freundfunktion print()
, das Zugriff auf x
private Mitglieder hat. Base
有一个友元函数 print()
,它可以访问 x
私有成员。Derived
有一个友元函数 access()
,它可以访问父类私有成员 x
。Derived
的对象 d
可以被父类 Base
友元函数 print()
访问,但是无法访问父类的私有成员 x
Derived
verfügt über eine Friend-Funktion access()
, die auf das private Mitglied der übergeordneten Klasse x
zugreifen kann. d
der Unterklasse Derived
kann über die Friend-Funktion print()
der übergeordneten Klasse Base
zugegriffen werden , aber Zugriff auf das private Mitglied x
der übergeordneten Klasse ist nicht möglich. 🎜🎜Das obige ist der detaillierte Inhalt vonWelchen Einfluss haben Friend-Funktionen auf die Klassenvererbung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!