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. Der Einfluss von X:: wird in den Rumpf der Definition erweitert. Dies erklärt, warum das von func zurückgegebenei auf X::i, dem char* i von X, verweist, anstatt auf das globale int i. Ohne den Modifizierer X:: würde die Funktion func eine gewöhnliche Nicht-Klassen-Funktion darstellen, die das globale int i zurückgibt.
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 . und -> 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); // define elsewhere
};
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