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

Steuern des Zugriffs auf Klassenmember
Schlüsselwörter