C Setara dengan Blok Statik Java
Dalam Java, blok statik menyediakan cara yang mudah untuk memulakan ahli statik sebelum kelas dimulakan. Walau bagaimanapun, C tidak mempunyai blok statik dalam kelas.
Pilihan 1: Permulaan pada Beban Proses
Untuk mencapai permulaan pada beban proses, gunakan pembolehubah statik di luar sebarang kelas, juga dikenali sebagai "skop unit terjemahan."
<code class="cpp">// translation-unit-scope-static-initialization.cpp static_block { // Code to initialize your static variables }</code>
Pilihan 2: Permulaan pada Instantiasi Kelas
Oleh kerana C tidak membenarkan pengamulaan daripada ahli statik bukan const, kita memerlukan pendekatan tidak langsung. Berikut ialah penyelesaiannya:
<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>
Satu kaveat ialah kedua-dua pilihan tidak menjamin tertib permulaan, kerana tertib pemula pembolehubah statik dalam C bukan deterministik.
Atas ialah kandungan terperinci Cara Meniru Blok Statik Java dalam C : Strategi Permulaan dan Pertimbangan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!