Bagaimana untuk Mensimulasikan Pembina Statik dalam C?

Susan Sarandon
Lepaskan: 2024-11-08 17:07:02
asal
786 orang telah melayarinya

How to Simulate Static Constructors in C  ?

Permulaan Statik dalam C : Alternatif kepada Pembina Statik

Dalam C , memulakan ahli data statik peribadi boleh menimbulkan cabaran kerana kekurangan daripada pembina statik. Walau bagaimanapun, terdapat penyelesaian elegan yang mencerminkan kefungsian pembina statik dalam bahasa lain.

Menggunakan Kelas Berasingan

Untuk mensimulasikan permulaan statik, cipta kelas biasa yang berasingan untuk memegang data statik dan mengisytiharkan contoh statik kelas ini dalam kelas yang memerlukannya. Contohnya:

// StaticStuff class holds static data
class StaticStuff {
    std::vector<char> letters_;

public:
    // Constructor initializes data
    StaticStuff() {
        for (char c = 'a'; c <= 'z'; c++)
            letters_.push_back(c);
    }

    // Provide access to static data
    std::vector<char>& letters() { return letters_; }
};

// Class that uses static data
class C {
    // Static instance of StaticStuff (initialized once)
    static StaticStuff staticStuff;
};
Salin selepas log masuk

Dalam contoh ini, StaticStuff memegang huruf data statik_, dan pembinanya memulakannya apabila instantiasi pertama. Instance statik staticStuff diisytiharkan dalam C, menyediakan akses kepada data statik dari dalam kelas C.

Kelebihan

Pendekatan ini menawarkan beberapa faedah:

  • Pengasingan permulaan: Ia memisahkan kod permulaan daripada kelas pembina, mengurangkan kerumitan.
  • Gelagat seperti singleton: Contoh statik memastikan bahawa data dimulakan sekali sahaja, walaupun apabila berbilang tika kelas dicipta.
  • Akses kepada ahli persendirian: Kelas StaticStuff boleh mengakses ahli persendirian C melalui pengisytiharan rakan atau awam fungsi getter.

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Pembina Statik 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