Heim  >  Artikel  >  Backend-Entwicklung  >  Wie können Sie statische Datenelemente in C ohne einen statischen Konstruktor initialisieren?

Wie können Sie statische Datenelemente in C ohne einen statischen Konstruktor initialisieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-09 01:17:02671Durchsuche

How Can You Initialize Static Data Members in C   Without a Static Constructor?

Statische Konstruktoren in C: Statische Datenelemente initialisieren

Statische Datenelemente sind Variablen, die innerhalb einer Klasse deklariert werden und von allen Instanzen dieser Klasse gemeinsam genutzt werden Klasse. In Sprachen wie Java und C# ist es möglich, statische Konstruktoren zu verwenden, um diese Mitglieder zu initialisieren, bevor Instanzen erstellt werden. C verfügt jedoch nicht über einen bestimmten statischen Konstruktor.

Um eine ähnliche Funktionalität in C zu erreichen, besteht ein alternativer Ansatz darin, eine separate Klasse für die statischen Daten zu erstellen. So funktioniert es:

class StaticStuff {
  // Read-only vector of characters
  std::vector<char> letters_;

public:
  StaticStuff() {
    for (char c = 'a'; c <= 'z'; c++) {
      letters_.push_back(c);
    }
  }

  // Getter method to access letters_
  const std::vector<char>& getLetters() const { return letters_; }
};

class Elsewhere {
  static StaticStuff staticStuff_; // Initialize once
};

In diesem Beispiel enthält StaticStuff das statische Datenelement „letters_“. Wenn das Programm startet, wird der Konstruktor für StaticStuff einmal ausgeführt und initialisiert Buchstaben_ automatisch mit den richtigen Zeichen. Dann können Instanzen von Elsewhere über die statische Instanz von StaticStuff auf Buchstaben_ zugreifen, ohne sie explizit initialisieren zu müssen.

Diese Methode bietet eine saubere und effiziente Möglichkeit, statische Datenelemente in C zu initialisieren, ohne auf hässliche Hacks oder unnötige Prüfungen zurückgreifen zu müssen in Instanzkonstruktoren.

Das obige ist der detaillierte Inhalt vonWie können Sie statische Datenelemente in C ohne einen statischen Konstruktor initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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