Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der C++-Funktionsvererbung: Was sind vererbte Zugriffsrechte?
In C++ hängt der Zugriff einer abgeleiteten Klasse auf Basisklassenfunktionen von der Vererbungsebene ab: öffentlich: Abgeleitete Klassen können ohne Einschränkungen auf öffentliche Funktionen der Basisklasse zugreifen und diese überschreiben. Geschützt: Abgeleitete Klassen können nur auf geschützte Funktionen der Basisklasse zugreifen und diese überschreiben und können sie nicht direkt von Objekten der Basisklasse aufrufen. privat: Abgeleitete Klassen können nicht auf private Funktionen der Basisklasse zugreifen.
Wenn in C++ eine abgeleitete Klasse eine Basisklasse erbt, kann sie Mitglieder der Basisklasse, einschließlich Funktionen, erben. Abhängig von den Vererbungsberechtigungen haben abgeleitete Klassen unterschiedliche Möglichkeiten, auf Basisklassenfunktionen zuzugreifen.
In C++ gibt es drei geerbte Zugriffsebenen:
Betrachten Sie die folgende Basisklasse und abgeleitete Klasse:
class Base { public: void public_function(); protected: void protected_function(); private: void private_function(); }; class Derived : public Base { public: // 派生类可以无限制地访问 public 函数 void call_public_function() { public_function(); } protected: // 派生类只能访问 protected 函数 void call_protected_function() { protected_function(); } };
Wie aus diesem Beispiel ersichtlich ist:
Derived
kann über die Funktion call_public_function zugegriffen werden
Methode public_function
der Basisklasse. Derived
可以通过 call_public_function
方法访问基类的 public_function
。call_protected_function
方法访问基类的 protected_function
。private_function
call_protected_function
auf die protected_function
der Basisklasse zugreifen. nicht direkt auf die private_function
der Basisklasse zugreifen oder diese überschreiben, da diese privat ist.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der C++-Funktionsvererbung: Was sind vererbte Zugriffsrechte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!