在物件導向程式設計中,靜態資料成員在類別的所有實例之間共用。通常,它們在實例建構函式中初始化。但是,如果您想在不依賴實例建構函式的情況下設定靜態資料成員怎麼辦?
要模擬靜態建構子的行為,請建立一個單獨的類別來封裝靜態資料。例如,考慮以下類別:
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中文網其他相關文章!