C-Äquivalente zu statischen Java-Blöcken
In Java bieten statische Blöcke eine praktische Möglichkeit, statische Mitglieder zu initialisieren, bevor die Klasse instanziiert wird. C hat jedoch keine statischen Blöcke innerhalb von Klassen.
Option 1: Initialisierung bei Prozesslast
Um eine Initialisierung bei Prozesslast zu erreichen, verwenden Sie statische Variablen außerhalb von anderen Klasse, auch bekannt als „Übersetzungseinheitsbereich“.
<code class="cpp">// translation-unit-scope-static-initialization.cpp static_block { // Code to initialize your static variables }</code>
Option 2: Initialisierung bei Klasseninstanziierung
Da C keine Initialisierung zulässt Für nicht konstante statische Elemente benötigen wir einen indirekten Ansatz. Hier ist eine Problemumgehung:
<code class="cpp">// static-initialized-via-base-class.cpp class StaticInitialized { public: static bool staticsInitialized = false; virtual void initializeStatics() = 0; }; class MyClass : private StaticInitialized { static int field1; static int field2; private: void initializeStatics() override { // Code to initialize field1 and field2 } };</code>
Eine Einschränkung besteht darin, dass beide Optionen die Reihenfolge der Initialisierung nicht garantieren, da die Reihenfolge der Initialisierung statischer Variablen in C nicht deterministisch ist.
Das obige ist der detaillierte Inhalt vonSo imitieren Sie statische Java-Blöcke in C: Initialisierungsstrategien und Überlegungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!