next up previous contents index
Next: Freunde Up: Klassen Previous: Konstante Elementfunktionen

Statische Klassenelemente

 

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).


next up previous contents index
Next: Freunde Up: Klassen Previous: Konstante Elementfunktionen

Peter Pfahler, 1997