Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann ich statische Java-Blöcke in C nachahmen?

Barbara Streisand
Freigeben: 2024-10-27 02:33:30
Original
739 Leute haben es durchsucht

How Can I Mimic Java Static Blocks in C  ?

C-Idiom für statische Java-Blöcke

Statische Java-Blöcke bieten eine praktische Möglichkeit, statische Mitglieder einer Klasse zu initialisieren. In C fehlt jedoch ein expliziter statischer Blockmechanismus innerhalb von Klassen. Um dies zu beheben, stellen wir eine gleichwertige Lösung für beide Szenarien vor:


  1. Initialisierung bei Prozesslast

  2. Initialisierung bei Klasseninstanziierung< /li>

Option 1: Initialisierung beim Laden des Prozesses

C ermöglicht statische Blöcke außerhalb von Klassen in der Übersetzungseinheit Umfang. Mit einer Makrotechnik können Sie solche Blöcke wie folgt definieren:

<code class="cpp">static_block {
    // Initialization code
}</code>
Nach dem Login kopieren

Option 2: Initialisierung bei Klasseninstanziierung

Für dieses Szenario können Sie Folgendes erreichen Statische Member-Initialisierung innerhalb von Klassen unter Verwendung einer Variation des Singleton-Entwurfsmusters:

<code class="cpp">class StaticInitialized {
    static bool initialized;
    virtual void initializeStatics();
};

class MyClass : private StaticInitialized {
    static int field1;
    static int field2;

    void initializeStatics() {
        // Initialization code
    }
};</code>
Nach dem Login kopieren

Dieser Ansatz verwendet einen nicht statischen Konstruktor, der bei der ersten Instanziierung der Klasse aufgerufen wird und die statischen Member initialisiert.

Implementierungsdetails

Die Lösung besteht darin, eine Dummy-Variable zu definieren, die mit einem Funktionsaufruf initialisiert wird. Der statische Blockcode wird im Hauptteil dieser Funktion platziert. Dies verhindert Konflikte mit anderen statischen Blöcken. Die verwendete Makromaschinerie gewährleistet die Einzigartigkeit jedes Blocks.

Das obige ist der detaillierte Inhalt vonWie kann ich statische Java-Blöcke in C nachahmen?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!