| Titel: | C++ static | |
| Beschreibung: | Die Bedeutung von statischen Elementen in C und C++, dessen Verwendung und Programmierung. | |
| Kategorie: | Programmierung | |
| Unterkategorie | C/C++ | |
| Benötigtes Fachwissen: | Fortgeschrittene Anfänger | |
| Artikel überarbeiten: | C++ static | |
In C und C++ können Variablen, Konstanten und Funktionen als >>static<< (statisch) definiert werden.
Dies bewirkt, dass mit >>static<< deklarierte Elemente pro Klasse nur einmal existieren und nicht wie üblich einmal für jede Instanz angelegt werden.
* statische Funktionen sind nur innerhalb des Quelltextes sichtbar
* statische Variablen und Konstanten behalten auch zwischen Funktionsaufrufen ihren Wert bei. So können etwa statische Variablen dazu verwendet werden um die Anzahl der erstellten Instanzen ihrer Klasse zu zählen.
// Definition einer modulglobalen Variablen static int modVar; // Definition einer modulglobalen Funktion bzw. Methode static void *function(void)
Um von außerhalb auf ein statisches Element zuzugreifen, gibt es zwei Möglichkeiten:
1. Objekt existiert
objekt.staticVar
bzw.
objekt.staticFunction()
2. kein Objekt existiert
Klasse::staticVar
bzw.
Klasse::staticFunction()
// Klasse.h class Klasse { static int staticVar; static void staticFunction(); }; // Klasse.cpp int Klasse::staticVar = 100; Klasse::staticFunction();
// Programmbeispiel eines Funktionspointers mit statischen Methoden static char *func1(void) { return "function1"; } static char *func2(void) { return "function2"; } int main( int argc, char *argv[] ) { // Funktionspointer char *(*get) (void); // Funktionsaufruf Nr.1 get = func1; printf("%s ", get() ); // gibt function1 aus // Funktionsaufruf Nr.2 get = func2; printf("%s ", get() ); // gibt function2 aus return0; }