Daten- und Funktionselemente einer Klasse können statisch deklariert werden. Ein solches Element existiert dann nur einmal. Alle Objekte einer Klasse teilen es sich (``Klassenspezifische Daten und Funktionen'').
class date { int day, month, year; public: static int printcount; static void print_printcount(); void print(); }; void date::print() { cout << day << "." << month << "." << year << "\n"; printcount++; } // Die static-Deklaration ist keine Definition. // Die erfolgt hier: int date::printcount = 0; void date::print_printcount() { cout << printcount << "Daten gedruckt"; }
Ein statisches Datenobjekt ist ein separates Objekt. Es existiert auch, wenn kein Objekt seiner Klasse existiert.
Benutzung (objektgebunden oder nicht):
int main(void) { date today; ... cout << today.printcount; cout << date::printcount; today.print_printcount(); date::print_printcount(); } /* main */
Vorteil gegenüber globalen Variablen und Funktionen:
Das statische Klassenelement ist global für die Elemente seiner Klasse, beeinflußt den Rest des Programms aber nicht (keine Namenskonflikte).