Was sind statische Variablen?

Die Frage hatten wir im Studium schon oft und keiner konnte sie wirklich beantworten. Da ich sie heute 3 Leuten erklärt habe und alle mit einem “Ahhhh!” reagiert haben, dachte ich, ich schreib schnell einen kurzen Artikel drüber 😉

Variablen, die mit der Notation static versehen sind existieren für jede Klasse nur exakt einmal. Wenn wir jetzt beispielsweise in C++ eine Klasse CPerson haben und darin eine Variable mit static int nAlter; deklarieren haben wir dadurch die Möglichkeit das Alter aller Instanzen unserer Klasse durch eine einzelne Zuweisung zu ändern!

Beispiel: Wir erstellen 2 Instanzen unser Klasse CPerson und nennen diese beiden beispielsweise Ulla und Matthias. Jetzt weisen wir der Variablen CPerson::nAlter (Die wir vorher deklarieren müssen, denn Speicher wird durch das Erstellen einer Instanz nicht automatisch durch Constructor für die Variable reserviert!) den Wert 40 zu, was passiert dann? Richtig, Ulla.nAlter und Matthias.nAlter ist jeweils 40! Toll, nicht wahr? 😉

Wozu das ganze? Das mag jetzt verwirrend klingen, aber nehmen wir mal an wir wollen immer wissen, wieviele Personen wir in unserem Programm erstellt haben. Dann deklarieren wir eine statische Variable in unserer Klasse (static int nAnzahl) und können nun im Constructor nAnzahl++ ausführen um den Counter zu erhöhen und im Destructor nAnzahl– um den Counter zu verringern.

Verstanden? Gut 😉

3 thoughts on “Was sind statische Variablen?”

  1. Das “keiner” am Anfang möchte ich überhört haben.

    Und als Anmerkungen:
    1.) Das gleiche funktioniert auch mit Methoden – die “static public int main()” aus Java ist ein Beispiel dafür. Statische Funktionen und Variablen sind auch ohne Instanziierung der entsprechenden Klasse verfügbar.
    2.) Unter Delphi gibt es keine statischen Variablen|Methoden. Dort werden sie Klassen-Variablen|Methoden genannt.

Leave a Reply to Martin Cancel reply

Your email address will not be published. Required fields are marked *