Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mensimulasikan Pembina Statik dalam C?

Bagaimana untuk Mensimulasikan Pembina Statik dalam C?

Susan Sarandon
Susan Sarandonasal
2024-11-08 17:07:02796semak imbas

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;
};

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!

Kenyataan:
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