首頁 >後端開發 >C++ >如何在不使用實例建構子的情況下初始化 C 中的靜態資料成員?

如何在不使用實例建構子的情況下初始化 C 中的靜態資料成員?

Barbara Streisand
Barbara Streisand原創
2024-11-07 20:25:03349瀏覽

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

靜態初始化:綜合指南

在物件導向程式設計中,靜態資料成員在類別的所有實例之間共用。通常,它們在實例建構函式中初始化。但是,如果您想在不依賴實例建構函式的情況下設定靜態資料成員怎麼辦?

要模擬靜態建構子的行為,請建立一個單獨的類別來封裝靜態資料。例如,考慮以下類別:

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() { /* ... */ }
};

要實現此目的,請在單獨的普通類別中定義靜態資料:

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

現在,在其中建立此類的靜態實例原始類別:

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

透過建立StaticStuff 類別的靜態實例,您實際上可以在建立Elsewhere 類別的任何實例之前初始化靜態資料成員,從而有效地模仿靜態建構函數的功能。

以上是如何在不使用實例建構子的情況下初始化 C 中的靜態資料成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn