Statische Initialisierung in C: Eine Alternative zu statischen Konstruktoren
In C kann die Initialisierung privater statischer Datenelemente aufgrund des Fehlens eine Herausforderung darstellen von statischen Konstruktoren. Es gibt jedoch eine elegante Lösung, die die Funktionalität statischer Konstruktoren in anderen Sprachen widerspiegelt.
Verwenden einer separaten Klasse
Um die statische Initialisierung zu simulieren, erstellen Sie eine separate gewöhnliche Klasse um die statischen Daten zu speichern und eine statische Instanz dieser Klasse innerhalb der Klasse zu deklarieren, die sie benötigt. Zum Beispiel:
// StaticStuff class holds static data class StaticStuff { std::vector<char> letters_; public: // Constructor initializes data StaticStuff() { for (char c = 'a'; c <= 'z'; c++) letters_.push_back(c); } // Provide access to static data std::vector<char>& letters() { return letters_; } }; // Class that uses static data class C { // Static instance of StaticStuff (initialized once) static StaticStuff staticStuff; };
In diesem Beispiel enthält StaticStuff die statischen Daten Buchstaben_ und ihr Konstruktor initialisiert sie bei der ersten Instanziierung. Die statische Instanz staticStuff wird in C deklariert und bietet Zugriff auf die statischen Daten innerhalb der C-Klasse.
Vorteile
Dieser Ansatz bietet mehrere Vorteile:
Das obige ist der detaillierte Inhalt vonWie simuliere ich statische Konstruktoren in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!