Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Meniru Blok Statik Java dalam C?
Blok statik Java menyediakan cara mudah untuk memulakan ahli statik kelas. C , bagaimanapun, tidak mempunyai mekanisme blok statik yang jelas dalam kelas. Untuk menangani perkara ini, kami membentangkan penyelesaian yang setara untuk kedua-dua senario:
C membenarkan blok statik di luar kelas, pada unit terjemahan skop. Dengan menggunakan teknik makro, anda boleh mentakrifkan blok tersebut seperti berikut:
<code class="cpp">static_block { // Initialization code }</code>
Untuk senario ini, anda boleh mencapai permulaan ahli statik dalam kelas menggunakan variasi corak reka bentuk Singleton:
<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>
Pendekatan ini menggunakan pembina bukan statik yang dipanggil pada instantiasi pertama kelas, memulakan ahli statik.
Penyelesaian melibatkan penentuan pembolehubah tiruan yang dimulakan dengan panggilan fungsi. Kod blok statik diletakkan di dalam badan fungsi ini. Ini menghalang konflik dengan blok statik lain. Jentera makro yang digunakan memastikan keunikan bagi setiap blok.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meniru Blok Statik Java dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!