Was ist der Unterschied zwischen geschützter und privater Ableitung in c ++ [Duplikat]

8

Was ist der Unterschied zwischen der Ableitung als geschützt oder privat in C ++? Ich bin nicht in der Lage, das herauszufinden, da beide den Zugriff auf Basisklassenmitglieder von abgeleiteten Klassenobjekten zu beschränken scheinen

    
paseena 05.05.2011, 21:42
quelle

5 Antworten

9

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.

%Vor%

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.

%Vor%

Eine von DerivedProtected abgeleitete Klasse kann erkennen, dass sie von BaseClass erbt, also kann sie sich selbst an freeStandingFunction übergeben.

%Vor%

Die DerivedPrivate -Klasse selbst weiß, dass sie von BaseClass abgeleitet ist, also kann sie sich selbst an freeStandingFunction übergeben.

%Vor%

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.

    
Daniel Gallagher 05.05.2011 22:17
quelle
3

Verwenden Sie diese Matrix (aus hier ), um die Sichtbarkeit der geerbten Mitglieder festzulegen:

%Vor%

Beispiel 1:

%Vor%

Beispiel 2:

%Vor%

Beispiel 3:

%Vor%     
Peter Jankuliak 05.05.2011 23:37
quelle
1

private lässt nur die Klasse zu, auf die es deklariert ist, um darauf zuzugreifen protected ermöglicht der Klasse und abgeleiteten / untergeordneten Klassen den Zugriff, als wäre es privat

    
Meberem 05.05.2011 21:54
quelle
1

Ich hatte eine sehr detaillierte Erklärung über Inheritance & amp; Access Specifiers in dieses Q . Es erläutert alle Arten von Vererbung und wie Zugriffs-Spezifizierer mit jedem von ihnen arbeiten. Sieh es dir an.
Hth :)

    
Alok Save 06.05.2011 04:36
quelle
0

Grundsätzlich erstreckt sich die protected Vererbung weiter nach unten in der Vererbungshierarchie als private Vererbung. Weitere Informationen finden Sie C ++ FAQ Lite .

    
Lstor 05.05.2011 21:51
quelle

Tags und Links