Bei der objektorientierten Programmierung werden statische Datenelemente von allen Instanzen einer Klasse gemeinsam genutzt. Normalerweise werden sie im Instanzkonstruktor initialisiert. Was aber, wenn Sie statische Datenelemente einrichten möchten, ohne auf den Instanzkonstruktor angewiesen zu sein?
Um das Verhalten statischer Konstruktoren zu emulieren, erstellen Sie eine separate Klasse, um die statischen Daten zu kapseln. Betrachten Sie beispielsweise die folgende Klasse:
class C { // read-only, can also be static const // should be filled with all characters from 'a' to 'z' static std::vector<char> alphabet; public: C() { /* ... */ } };
Um dies zu erreichen, definieren Sie die statischen Daten in einer separaten gewöhnlichen Klasse:
class StaticStuff { std::vector<char> letters_; public: StaticStuff() { for (char c = 'a'; c <= 'z'; c++) { letters_.push_back(c); } } };
Erstellen Sie nun eine statische Instanz dieser Klasse innerhalb die ursprüngliche Klasse:
class Elsewhere { static StaticStuff staticStuff; // constructor runs once, single instance };
Durch das Erstellen einer statischen Instanz der StaticStuff-Klasse initialisieren Sie im Wesentlichen die statischen Datenelemente, bevor Instanzen der Elsewhere-Klasse erstellt werden, und ahmen so effektiv die Funktionalität eines statischen Konstruktors nach.
Das obige ist der detaillierte Inhalt vonWie initialisiere ich statische Datenelemente in C, ohne den Instanzkonstruktor zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!