geschützt (C++)
protected:
[member-list]
protected base-class
Hinweise
Das Schlüsselwort gibt protected Zugriff auf den Klassenmember in der Memberliste bis zum nächsten Zugriffsspezifizierer (Öffentlich oder private) oder dem Ende der Klassendefinition.Klassenmember, die als protected deklariert werden, können nur durch Folgendes verwendet werden:
Memberfunktion der Klasse, die ursprünglich dieser Member deklariert wurde.
Freunde der Klasse, die ursprünglich dieser Member deklariert wurde.
abgeleiteten Klassen mit öffentlichen oder geschütztem Zugriff von der Klasse, die ursprünglich dieser Member deklariert wurde.
Verweisen Sie auch abgeleitete Klassen, die privat privaten Zugriff auf geschützte Member verfügen.
Wenn dem Namen einer Basisklasse vorangestellt ist, gibt das protected-Schlüsselwort an, dass die öffentliche und geschützte Member der Basisklasse auf geschützte Member ihrer abgeleiteten Klassen sind.
Geschützte Member sind hingegen nicht privat wie private-Member, die nur auf die Member der Klasse zugegriffen werden kann, in der sie deklariert werden, sind jedoch nicht so wie Öffentlich-Member, die öffentlich in jeder Funktion zugegriffen werden kann.
Geschützte Member, die ebenfalls deklariert werden, da static jedem Friend oder Memberfunktion einer abgeleiteten Klasse zugegriffen werden kann.Geschützte Member, die nicht deklariert werden, da static auf Freunden und Memberfunktionen in einer abgeleiteten Klasse nur über einen Zeiger auf den zugegriffen werden kann, oder ein Verweis auf das Objekt der abgeleiteten Klasse.
Weitere Informationen finden Sie unter friend, Öffentlich, Privateund Member ACCESS-Tabelle in Steuern des Zugriffs auf Klassenmember.
bestimmte /clr-
In CLR-Typen können die C++-Zugriffsspezifizierer Schlüsselwörter (Öffentlich, privateprotected) und die Sichtbarkeit von Typen und Methoden hinsichtlich der Assembly beeinträchtigen.Weitere Informationen finden Sie unter Typ-und Member-Sichtbarkeit.
Hinweis |
---|
Die Dateien, die mit /LN kompiliert werden, sich nicht auf dieses Verhalten beeinflusst.In diesem Fall sind alle verwalteten Klassen (entweder öffentlich oder privat) angezeigt. |
Beispiel
// keyword_protected.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class X {
public:
void setProtMemb( int i ) { m_protMemb = i; }
void Display() { cout << m_protMemb << endl; }
protected:
int m_protMemb;
void Protfunc() { cout << "\nAccess allowed\n"; }
} x;
class Y : public X {
public:
void useProtfunc() { Protfunc(); }
} y;
int main() {
// x.m_protMemb; error, m_protMemb is protected
x.setProtMemb( 0 ); // OK, uses public access function
x.Display();
y.setProtMemb( 5 ); // OK, uses public access function
y.Display();
// x.Protfunc(); error, Protfunc() is protected
y.useProtfunc(); // OK, uses public access function
// in derived class
}