Element-Zugriffskontrolle
Nach oben zu Gültigkeitsbereich von Elementen - Index
Member (Elemente) einer Klasse erhalten Zugriffsattribute entweder standardmäßig (abhängig von Klassenschlüsseln und dem Ort der Deklaration) oder durch einen der drei folgenden Zugriff-Spezifizierer: public, private und protected. Bedeutung dieser Attribute:
- public: Der Member kann von jeder Funktion verwendet werden.
- private: Der Member kann nur von Member-Funktionen und Friends der Klasse, in der er deklariert wurde, verwendet werden.
- protected: Es gilt dasselbe wie für private. Zusätzlich ist jedoch die Verwendung durch Member-Funktionen und Friends von Klassen, die von der deklarierten Klasse abgeleitet sind, möglich. Letzteres gilt allerdings nur für Objekte vom abgeleiteten Typ. (Abgeleitete Klassen werden unter "Zugriff auf Basisklassen und abgeleitete Klassen" behandelt.)
Hinweis: Friend-Funktionsdeklarationen werden nicht von Zugriff-Spezifizierern beeinflusst (weitere Informationen finden Sie unter "Friends von Klassen").
Member einer Klasse sind standardmäßig private. Sie müssen daher explizit den Zugriff-Spezifizierer public oder protected verwenden, um die Voreinstellung zu überschreiben.
Member einer Struktur (struct) sind standardmäßig public. Sie können diese Voreinstellung jedoch mit dem Zugriff-Spezifizierer private oder protected überschreiben.
Member einer Variante (union) sind standardmäßig public; diese Einstellung kann nicht geändert werden. Die Angabe eines Zugriff-Spezifizierers ist in Verbindung mit Varianten-Member nicht zulässig.
Ein Zugriff-Spezifizierer bleibt für alle folgenden Member-Deklarationen gültig, bis ein anderer Spezifizierer auftritt. Zum Beispiel:
class X { int i; // X::i is private by default char ch; // so is X::ch public: int j; // next two are public int k; protected: int l; // X::l is protected }; struct Y { int i; // Y::i is public by default private: int j; // Y::j is private public: int k; // Y::k is public }; union Z { int i; // public by default; no other choice double d; };
Hinweis: Die Zugriff-Spezifizierer können in jeder beliebigen Reihenfolge aufgeführt und gruppiert werden. Sie können sich die Mühe der Typisierung ersparen, indem Sie alle private-Member gemeinsam deklarieren usw.
Siehe auch
- C++-Klassen
- Klassentypen
- Gültigkeitsbereich Klasse
- Klassenobjekte
- Klassen-Member-Liste
- Member-Funktionen
- Das Schlüsselwort this
- Statische Member
- Inline-Funktionen
- Gültigkeitsbereich von Membern
- Verschachtelte Typen
- Zugriff auf Basisklassen und abgeleitete Klassen
- Virtuelle Basisklassen
- Friends von Klassen