Element-Zugriffskontrolle

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Gültigkeitsbereich von Elementen - Index

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. Es folgt die Bedeutung dieser Attribute:

  • public: Das Element kann von jeder Funktion benutzt werden.
  • private: Das Element kann nur von Elementfunktionen und Friends der Klasse, in der es deklariert wurde, benutzt werden.
  • protected: Es gilt das gleiche wie für private. Zusätzlich ist jedoch die Benutzung durch Elementfunktionen 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 in Zugriff auf Basisklassen und abgeleitete Klassen besprochen.)

Anmerkung:  Friend Funktionsdeklarationenen sind nicht von Zugriff-Spezifizierern beeinflusst (Mehr Informationen erhalten Sie unter dem Stichwort Friends von Klassen).

Elemente einer Klasse sind standardmäßig private. Sie müssen daher explizit den Zugriff-Spezifizierer public oder protected verwenden, um die Voreinstellung zu überschreiben.

Elemente einer Struktur (struct) sind standardmäßig public; Sie können diese Voreinstellung jedoch mit dem Zugriff-Spezifizierer private oder protected überschreiben.

Elemente einer Variante (union) sind standardmäßig public; diese Einstellung kann nicht geändert werden. Die Angabe eines Zugriff-Spezifizierers ist in Verbindung mit Varianten-Elementen nicht zulässig.

Ein Zugriff-Spezifizierer bleibt für alle folgenden Elementdeklarationen gültig, bis ein anderer Spezifizierer auftritt. Zum Beispiel:



 class X {
    int i;    // X::i ist standardmäßig private
    char ch;  // das gilt auch für X::ch
 public:
    int j;    // die nächsten zwei sind public
    int k;
 protected:
    int l;    // X::l ist protected
 };
 struct Y {
    int i;    // Y::i ist standardmäßig public
 private:
    int j;    // Y::j ist private
 public:
    int k;    // Y::k ist public
 };
 union Z {
    int i;    // ist standardmäßig public; keine andere Möglichkeit
    double d;
 };



Anmerkung:  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 Elemente gemeinsam deklarieren, usw.

Siehe auch