Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
You are viewing an older revision! See the latest version
Klassenvariablen
Statische Klassenvariablen entsprechen im Prinzip globalen Variablen unter Anwendung der Kapselung von
Klassen. Sie existieren unabhängig davon, wie oft eine Klasse instanziiert wird, immer genau einmal. Sie beinhalten damit Daten, die allen Objekten einer Klasse gemeinsamen sind. Auf öffentliche statische Daten einer
Klasse kann jederzeit zugegriffen werden, unabhängig davon, ob schon Instanzen der Klasse vorhanden sind
oder nicht. Damit auf statische Variable zugegriffen werden kann müssen diese public sein.
Besser für den Zugriff auf statische Variable ist es eine Methode für den Zugriff zu implementiert. Diese kann ebenfalls statisch sein (statische Methode).
Z.B. könnte die Anzahl der erzeugten Objekte gezählt werden.
class Date : public RTC8563
{
private:
uint8_t bcdToUint(uint8_t const nybbles);
static int anzahl; // Klassenvariable
public:
Date()
{
anzahl++; // Klassenvariable erhöhen
}
uint8_t GetDay();
static int GetAnzahl() // statische Methode
{
return anzahl;
}
};
Und in main:
int Date:: anzahl = 0;
int main()
{
Date rtc; // instanziieren des Objektes rtc
pc.printf("Anzahl: %d", Date::GetAnzahl); // Zugriff auf stat. Methode über Klassenname
}
See how it works: Statische Variable