Wenn ich ein Mitglied geschützt in Basisklasse deklarieren und als privat in abgeleiteten Klasse, den Zugriff auf das Element erben ist nicht erlaubtZugang Erklärung eines geschützten Mitglied der Basisklasse als öffentlich in abgeleiteten Klasse C++
class base{
protected:
int a;
};
class derived : public base
{
protected:
int b;
public:
derived():base(){ a=0; b=0;}
void show(){cout<<"a= "<<a<<"\tb= "<<b;}
};
int main()
{
derived d;
d.a=10; //error: 'int base::a' is protected within this context
d.show();
}
Aber wenn ich die abgeleitete Klasse schreiben, kann ich Wert den Zugang der Öffentlichkeit für ‚a‘ (geschützt in Basis)
class derived : public base
{
protected:
int b;
public:
base::a;
};
int main()
{
derived d;
d.a=20; // no error
}
Nun gewähren von ‚a‘ in main() ohne Fehler ändern.
Ich lese in C++ vollständige Nachschlagewerk, Zugriff gewähren wird Zugriffsrechte wiederherstellen, aber man kann nicht erhöhen oder senken den Zugriffsstatus.
Kann mir jemand sagen, warum ich auf geschützte Mitglieder der Basisklasse zugreifen kann, privat geerbt und später öffentlichen Zugriff wie eine öffentliche Variable der abgeleiteten Klasse gegeben (verletzt es nicht die Kapselung, dh Geschütztes Mitglied sollte wiederhergestellt werden wie geschützt). Bitte leitet mich, wenn mein Verständnis
Geschützte Variablen, auf die nur innerhalb der abgeleiteten Klasse zugegriffen werden kann. Geschützte Variable ist keine öffentliche Variable, die als 'd.a = 20;' verwendet werden kann. –
protected gibt das Mitglied an seine abgeleitete Klasse, aber es gibt es nicht für die Öffentlichkeit (außerhalb der Nutzung), wenn Sie das geschützte Mitglied veröffentlichen, ist es dann auch für andere öffentlich zugänglich. – nullqube