C 中的靜態初始化:靜態建構子的替代方案
在C 中,初始化私有靜態資料成員可能會帶來挑戰,因為缺乏靜態建構函數。然而,有一個優雅的解決方案,可以鏡像其他語言中靜態建構函數的功能。
使用單獨的類別
要模擬靜態初始化,請建立一個單獨的普通類別保存靜態資料並在需要它的類別中聲明此類的靜態實例。例如:
// 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; };
在此範例中,StaticStuff 保存靜態資料 letter_,其建構函式在第一次實例化時對其進行初始化。靜態實例 staticStuff 在 C 中聲明,提供對 C 類中靜態資料的存取。
優點
這個方法有幾個好處:
以上是如何在 C 中模擬靜態建構函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!