C++-Programmierung/ Im Zusammenhang mit Klassen/ Statische Membervariablen
Gleich zu Beginn: C++ kennt im Unterschied zu anderen Programmiersprachen, wie z.B. C#, keine statische Klassen![1] Dafür kann eine Klasse aber statische Inhalte haben, die im gleichen Ausführungsobjekt
- in allen Instanzen dieser Klasse gleich sind und
- auch verfügbar sind, wenn keine Instanz der Klasse existiert.
Dies gilt auch für statische Mitgliedsvariablen.
Eine statische Variable wird mit dem Speicherklassenschlüsselwort static
deklariert. Variablen der Speicherklasse static
sind nur in dem Objektcode gültig, in dem sie definiert sind. Um dieses Verhalten bei einer Mitgliedsvariable in einer Klasse zu erreichen, muss neben der Deklaration in der Klasse eine Definition dieser Variable im Ausführungsobjekt der Klasse, außerhalb der Deklaration, erfolgen. Bei konstanten, statischen Mitgliedsvariablen genügt die Deklaration, Definition und Initialisierung innerhalb der Klassendeklaration.
Die Klasse mitStatischemInhalt
hat nun eine statische Mitgliedsvariable x
, die in allen Instanzen der Klasse und auch ohne Instanzierung über mitStatischemInhalt::x
erreichbar ist, und sich auf die eine Definition int mitStatischemInhalt::x;
bezieht.
Referenzen
Bearbeiten- ↑ benediktibk. “C++: statische Klasse vs. Namesbereich”. Hackerboard.de, 2007.
Bitte beachten Sie bei diesem Vorgehen, dass die Speicherklasse static
festlegt, dass die statischen Inhalte einer Klasse nur in dem Modul gültig sind, in dem sie definiert wurden. Ein externer Zugriff auf diese Variable ist nicht möglich.
Beispiel: Für ein modular aufgebautes Programm werden erst zwei getrennte Bibliotheken A und B erzeugt, die am Ende zum Hauptprogramm hinzugelinkt werden. Beide verwenden die Klasse C mit der statischen Member-Variable _sm. Dann gibt es in Bibliothek A ein C::_sm, jedoch ein anderes C::_sm in Bibliothek B. Beim Datenaustausch eines C-Objekts zwischen den Bibliotheken kann sich somit _sm scheinbar ändern.