Heim > Backend-Entwicklung > C++ > Wie initialisiere ich statische Datenelemente in C, ohne den Instanzkonstruktor zu verwenden?

Wie initialisiere ich statische Datenelemente in C, ohne den Instanzkonstruktor zu verwenden?

Barbara Streisand
Freigeben: 2024-11-07 20:25:03
Original
347 Leute haben es durchsucht

How to Initialize Static Data Members in C   Without Using the Instance Constructor?

Statische Initialisierung: Ein umfassender Leitfaden

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() { /* ... */ }
};
Nach dem Login kopieren

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);
        }
    }
};
Nach dem Login kopieren

Erstellen Sie nun eine statische Instanz dieser Klasse innerhalb die ursprüngliche Klasse:

class Elsewhere {
    static StaticStuff staticStuff; // constructor runs once, single instance
};
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage