protected (C++)
Syntax
protected:
[member-list]
protected base-class
Hinweise
Das Schlüsselwort protected
spezifiziert den Zugriff auf Klassenmitglieder in der Mitgliederliste bis zum nächsten Zugriffsspezifizierer (public
oder private
) oder bis zum Ende der Klassendefinition. Klassenmitglieder, die als protected
deklariert werden, können nur mit folgenden Möglichkeiten verwendet werden:
Memberfunktionen der Klasse, die ursprünglich diese Member deklariert hat.
Friends der Klasse, die ursprünglich diese Member deklariert hat.
Klassen, die mit öffentlichem oder geschütztem Zugriff von der Klasse abgeleitet werden, die ursprünglich diese Member deklariert hat.
Direkt privat abgeleitete Klassen, die auch über privaten Zugriff auf geschützte Member verfügen.
Wenn das Schlüsselwort protected
dem Namen einer Basisklasse vorangestellt ist, gibt es an, dass die öffentlichen und geschützten Mitglieder der Basisklasse geschützte Mitglieder der abgeleiteten Klassen sind.
Geschützte Mitglieder sind nicht so privat wie private
-Mitglieder, die nur für Mitglieder der Klasse zugänglich sind, in der sie deklariert werden. Sie sind jedoch nicht so öffentlich wie public
-Mitglieder, die in jeder Funktion zugänglich sind.
Geschützte Mitglieder, die auch als static
deklariert werden, sind für alle Freund- oder Mitgliederfunktionen einer abgeleiteten Klasse zugänglich. Geschützte Mitglieder, die nicht als static
deklariert werden, sind für Freunds- und Mitgliederfunktionen in einer abgeleiteten Klasse nur über einen Zeiger/Verweis auf die abgeleitete Klasse bzw. über ein Objekt derselben zugänglich.
Weitere Informationen finden Sie unter friend, public, private, sowie in der Mitgliederzugriffstabelle unter Steuern des Zugriffs auf Klassenmitglieder.
"/clr"-spezifisch
In CLR-Typen können die C++-Schlüsselwörter für Zugriffsspezifizierer (public
, private
und protected
) die Sichtbarkeit von Typen und Methoden hinsichtlich der Assemblys beeinträchtigen. Weitere Informationen finden Sie unter Mitgliederzugriffssteuerung.
Hinweis
Dateien, die mit /LN kompiliert werden, werden durch dieses Verhalten nicht beeinflusst. In diesem Fall werden alle verwalteten Klassen (entweder "public" oder "private") angezeigt.
"/clr"-spezifisch – Ende
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 the derived class
}
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für