2010-12-14 5 views
4

Wenn ich ein geschütztes Datenelement in einer Klasse deklariere, bedeutet dies, dass es nicht für die äußere Welt zugänglich ist, sondern für die abgeleitete Klasse. Meine Frage istGeschützte Datenelemente und Datenfunktionen

wird es auf eine Klasse zugreifbar sein, die von der abgeleiteten Klasse abgeleitet ist?

Antwort

6

Ja, geschützte Datenelemente sind bis in die Vererbungshierarchie zugänglich.

Geschützte Daten werden normalerweise besser vermieden. Eine Alternative besteht darin, geschützte Methoden zu schreiben, die auf die privaten Daten zugreifen. Dies hält die Daten in einer einzelnen Klasse gekapselt. Es macht es auch einfach, einen Haltepunkt für Änderungen an den Daten festzulegen.

2

Ja. (Sie hätten das übrigens einfach ausprobiert.)

3

Tatsächlich ist ein geschütztes Datenelement nur mit geschützter und öffentlicher Vererbung zugänglich. Hier

ist ein Beispiel, wo ein geschütztes Mitglied nicht zugänglich in der abgeleiteten Klasse ist:

class Base 
{ 
protected: 
int iBase; 
}; 

class Derived : private Base 
{ 
// iBase not accessible 
};