Heim >Backend-Entwicklung >C++ >Wie kann ich statische Java-Blöcke in C nachahmen?
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:
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>
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>
Dieser Ansatz verwendet einen nicht statischen Konstruktor, der bei der ersten Instanziierung der Klasse aufgerufen wird und die statischen Member initialisiert.
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!