Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memulakan Ahli Data Statik dalam C Tanpa Menggunakan Pembina Instance?

Bagaimana untuk Memulakan Ahli Data Statik dalam C Tanpa Menggunakan Pembina Instance?

Barbara Streisand
Barbara Streisandasal
2024-11-07 20:25:03349semak imbas

How to Initialize Static Data Members in C   Without Using the Instance Constructor?

Permulaan Statik: Panduan Komprehensif

Dalam pengaturcaraan berorientasikan objek, ahli data statik dikongsi antara semua kejadian kelas. Biasanya, ia dimulakan dalam pembina contoh. Walau bagaimanapun, bagaimana jika anda ingin menyediakan ahli data statik tanpa bergantung pada pembina contoh?

Untuk meniru gelagat pembina statik, cipta kelas berasingan untuk merangkum data statik. Sebagai contoh, pertimbangkan kelas berikut:

class C {
    // read-only, can also be static const
    // should be filled with all characters from 'a' to 'z'
    static std::vector<char> alphabet;
public:
    C() { /* ... */ }
};

Untuk mencapai ini, takrifkan data statik dalam kelas biasa yang berasingan:

class StaticStuff {
    std::vector<char> letters_;
public:
    StaticStuff() {
        for (char c = 'a'; c <= 'z'; c++) {
            letters_.push_back(c);
        }
    }
};

Sekarang, buat contoh statik kelas ini dalam kelas asal:

class Elsewhere {
    static StaticStuff staticStuff; // constructor runs once, single instance
};

Dengan mencipta contoh statik kelas StaticStuff, anda pada asasnya memulakan ahli data statik sebelum sebarang contoh kelas Elsewhere dibuat, meniru kefungsian pembina statik dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk Memulakan Ahli Data Statik dalam C Tanpa Menggunakan Pembina Instance?. 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