Zu Illustrationszwecken haben wir in Zeile 8 noch eine Variable, ExtraDaten hinzugefügt. Da wir das Schlüsselwort static verwenden, handelt es sich dabei um eine externe Variable und es existiert nur eine Variable für alle Objekte der Klasse. Alle sieben Objekte dieser Klasse teilen sich also diese eine Variable.
Die Variable wird hier lediglich deklariert, was heißt, daß sie einmal existieren wird, sie wird aber noch nicht definiert. Eine Deklaration sagt dem Compiler, daß irgendwo im Programm eine Variable existieren wird und gibt ihr einen Namen, aber es ist die Definition, die im Speicher einen Platz für die Variable bereitstellt. Per Definitionem kann eine statische Variable im Kopf einer Klasse deklariert, nicht aber definiert werden. Sie wird also in der Implementation definiert, in unserem Fall in Zeile 17 und kann dann innerhalb der Klasse verwendet werden.
Bild 6-1 versinnbildlicht einige der Variablen. Die Objekte mit den Namen Grosz, Gruppe[0], Gruppe[1] und Gruppe[2] sind auf dem Bild nicht zu sehen, aber auch sie teilen sich mit den anderen die Variable ExtraDaten. Sie werden im Bild nicht gezeigt, um es ein wenig übersichtlicher und klarer zu gestalten. Jedes Objekt hat seine eigene Laenge und Breitey, da diese nicht als static deklariert sind.

Die Zeile 24 des Konstruktors setzt die globale Variable mit jedem Objekt, das wir erzeugen, auf 1. Es ist nur eine Zuweisung vonnöten, die anderen sechs sind unnötig. Es ist im Allgemeinen keine gute Idee, einer statischen Variable in einem Konstruktor einen Wert zuzuweisen, in diesem Fall aber illustriert das eine Variable, die als static deklariert ist. Um zu zeigen, das es wirklich nur eine solche Variable gibt, die sich alle Objekte der Klasse teilen, inkrementiert die Methode, die sie liest, die Variable auch. Jedes Mal, wenn wir sie in den Zeilen 61 bis 65 lesen, wird sie um 1 erweitert, und das Ergebnis beweist uns, daß es sich bei dieser Variable wirklich um ein Einzelstück handelt. Du wirst auch bemerken, daß die Methode mit dem Namen HoleExtraDaten innerhalb der Klassendeklaration definiert und daher als inline-Code behandelt wird.
Du wirst Dich an die beiden statischen Variablen, die wir in den Zeilen 18 und 19 der Datei DATUM.H des Kapitels 5 deklariert haben, erinnern. In Zeile 9 und 10 von DATUM.CPP haben wir sie definiert und gesagt, daß wir uns ihnen später widmen werden. Deklaration und Definition dieser Variablen sind ein gutes Beispiel dafür, wo diese Konstrukte für statische Variablen in Deinem Code stehen sollten.
Wenn Du sicher bist, daß Du dieses Beispielprogramm und vor allem Funktion und Verwendung von statischen Variablen verstanden hast, kompiliere es und führe es aus.
Copyright © 1997, 1998, 2001-2006 Heinz Tschabitscher - Letzte Änderung 13. Dezember 2005
Heinz Tschabitscher - | Datenschutz | Impressum - Kommentare, Kritik, Anregungen, Erklärungen?