C++- Zugriffsbezeichner
Greifen Sie auf Spezifizierer zu
Inzwischen sind Sie mit dem public
Schlüsselwort, das in allen unseren Klassenbeispielen vorkommt, ziemlich vertraut:
Beispiel
class MyClass { // The class
public: // Access specifier
// class members goes here
};
Das public
Schlüsselwort ist ein Zugriffsbezeichner.
Zugriffsbezeichner definieren, wie auf die Mitglieder (Attribute und Methoden) einer Klasse zugegriffen werden kann. Im obigen Beispiel sind die Mitglieder public
- was bedeutet, dass sie von außerhalb des Codes aufgerufen und geändert werden können.
Was ist jedoch, wenn wir möchten, dass Mitglieder privat und vor der Außenwelt verborgen sind?
In C++ gibt es drei Zugriffsbezeichner:
public
- Mitglieder sind von außerhalb der Klasse zugänglichprivate
- Mitglieder können von außerhalb der Klasse nicht aufgerufen (oder angezeigt) werdenprotected
- Mitglieder können nicht von außerhalb der Klasse aufgerufen werden, jedoch kann auf sie in geerbten Klassen zugegriffen werden. Sie werden später mehr über Vererbung erfahren .
Im folgenden Beispiel demonstrieren wir die Unterschiede zwischen public
und private
-Elementen:
Beispiel
class
MyClass {
public: // Public access
specifier
int x; // Public attribute
private: // Private access specifier
int y; // Private attribute
};
int main() {
MyClass
myObj;
myObj.x = 25; // Allowed (public)
myObj.y = 50; //
Not allowed (private)
return 0;
}
Wenn Sie versuchen, auf ein privates Mitglied zuzugreifen, tritt ein Fehler auf:
error: y is private
Hinweis: Es ist möglich, auf private Mitglieder einer Klasse zuzugreifen, indem eine öffentliche Methode innerhalb derselben Klasse verwendet wird. Siehe das nächste Kapitel ( Einkapselung ) um dies zu tun.
Tipp: Es gilt als bewährte Methode, Ihre Klassenattribute als privat zu deklarieren (so oft wie möglich). Dadurch wird die Wahrscheinlichkeit verringert, dass Sie (oder andere) den Code durcheinanderbringen. Dies ist auch der Hauptbestandteil des Encapsulation - Konzepts, über das Sie im nächsten Kapitel mehr erfahren werden.
Hinweis: Standardmäßig sind alle Mitglieder einer Klasse, private
wenn Sie keinen Zugriffsbezeichner angeben:
Beispiel
class
MyClass {
int x; // Private attribute
int y; // Private attribute
};