Betrachten wir ein Codebeispiel, das zeigt, was mit verschiedenen Vererbungsebenen erlaubt (oder nicht) ist:
%Vor% DerivedProtected
kann sich selbst an freeStandingFunction
übergeben, weil es weiß, dass es von BaseClass
abgeleitet ist.
Ein Nicht-Freund (Klasse, Funktion, was auch immer) kann DerivedProtected
nicht an freeStandingFunction
übergeben, weil die Vererbung geschützt ist, also außerhalb der abgeleiteten Klassen nicht sichtbar ist. Gleiches gilt für die private Vererbung.
Eine von DerivedProtected
abgeleitete Klasse kann erkennen, dass sie von BaseClass
erbt, also kann sie sich selbst an freeStandingFunction
übergeben.
Die DerivedPrivate
-Klasse selbst weiß, dass sie von BaseClass
abgeleitet ist, also kann sie sich selbst an freeStandingFunction
übergeben.
Schließlich kann eine Nicht-Freund-Klasse weiter unten in der Vererbungshierarchie nicht sehen, dass DerivedPrivate
von BaseClass
erbt, also kann sie sich nicht an freeStandingFunction
übergeben.
Verwenden Sie diese Matrix (aus hier ), um die Sichtbarkeit der geerbten Mitglieder festzulegen:
%Vor%Beispiel 1:
%Vor%Beispiel 2:
%Vor%Beispiel 3:
%Vor% Grundsätzlich erstreckt sich die protected
Vererbung weiter nach unten in der Vererbungshierarchie als private
Vererbung. Weitere Informationen finden Sie C ++ FAQ Lite .
Tags und Links c++