Bagaimanakah Saya Boleh Meniru Blok Statik Java dalam C?

Barbara Streisand
Lepaskan: 2024-10-27 02:33:30
asal
739 orang telah melayarinya

How Can I Mimic Java Static Blocks in C  ?

C Idiom untuk Blok Statik Java

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:


  1. Pemulaan Semasa Beban Proses

  2. Pemulaan Semasa Pemulaan Kelas< /li>

Pilihan 1: Permulaan Semasa Proses Beban

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>
Salin selepas log masuk

Pilihan 2: Permulaan Semasa Pembentukan Kelas

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>
Salin selepas log masuk

Pendekatan ini menggunakan pembina bukan statik yang dipanggil pada instantiasi pertama kelas, memulakan ahli statik.

Butiran Pelaksanaan

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!