Gültigkeitsbereich von Elementen
Nach oben zu Gültigkeitsbereich von Elementen - Index
In Inline-Funktionen und Exceptions, verwendet der Ausdruck X::func()
des Beispiels den Klassennamen X mit dem Gültigkeitsbereichs-Zugriffsmodifizierer. Dadurch wird angezeigt, dass func als Elementfunktion von X betrachtet wird und den gleichen Gültigkeitsbereich wie X besitzt, obwohl es "außerhalb" der Klasse definiert wurde. Die Influenz von X:: wird im Rumpf der Definition erweitert. Dies erklärt, warum das von func gelieferte i auf X::i, dem char* i von X referenziert anstatt auf das globale int i. Ohne den Modifizierer X:: würde die Funktion func eine gewöhnliche Nichtklassen-Funktion darstellen, die das globale int i liefert.
Alle Elementfunktionen sind also im Gültigkeitsbereich ihrer Klasse, auch wenn sie außerhalb der Klasse definiert wurden.
Auf Datenelemente der Klasse X kann mit Hilfe der Auswahloperatoren . and -> zugegriffen werden (wie in C-Strukturen). Dies gilt auch für Elementfunktionen (siehe Das Schlüsselwort this). Ein Beispiel:
class X { public: int i; char name[20]; X *ptr1; X *ptr2; void Xfunc(char*data, X* left, X* right); // andernorts definiert }; void f(void); { X x1, x2, *xptr=&x1; x1.i = 0; x2.i = x1.i; xptr–>i = 1; x1.Xfunc("stan", &x2, xptr); }
Für ein Element oder Basiselement m der Klasse X nennt man den Ausdruck X::m einen qualifizierten Namen. Er hat den gleichen Typ wie m und ist nur dann ein L-Wert, wenn auch m ein L-Wert ist. Auf das korrekte Element m kann damit auch dann zugegriffen werden, wenn der Klassenname X durch einen anderen Namen verdeckt ist (durch Verwendung von X::m).
Es ist nicht möglich, in einem anderen Programmteil als der Klassendeklaration selbst Elemente einer Klasse hinzuzufügen. Die Klasse X kann nicht Objekte derselben Klasse X enthalten, wohl aber Zeiger oder Referenzen auf Objekte derselben Klasse X (ähnlich wie bei C-Strukturen und Varianten).
Siehe auch
- C++-Klassen
- Klassentypen
- Gültigkeitsbereich Klasse
- Klassenobjekte
- Klassen-Member-Liste
- Member-Funktionen
- Das Schlüsselwort this
- Statische Elemente
- Inline-Funktionen
- Verschachtelte Typen
- Element-Zugriffskontrolle
- Zugriff auf Basisklassen und abgeleitete Klassen
- Virtuelle Basisklassen
- Friends von Klassen