C 中的靜態建構子:初始化靜態資料成員
靜態資料成員是在類別中宣告的變數,在該類別中的所有實例之間共用班級。在 Java 和 C# 等語言中,可以在建立任何實例之前使用靜態建構子來初始化這些成員。然而,C 沒有指定的靜態建構函數。
要在 C 中實作類似的功能,另一種方法是為靜態資料建立一個單獨的類別。它的工作原理如下:
class StaticStuff { // Read-only vector of characters std::vector<char> letters_; public: StaticStuff() { for (char c = 'a'; c <= 'z'; c++) { letters_.push_back(c); } } // Getter method to access letters_ const std::vector<char>& getLetters() const { return letters_; } }; class Elsewhere { static StaticStuff staticStuff_; // Initialize once };
在此範例中,StaticStuff 保存靜態資料成員 letter_。當程式啟動時,StaticStuff的建構子會執行一次,自動用正確的字元初始化letters_。然後,Elsewhere 的實例可以透過 StaticStuff 的靜態實例存取 letter_,而無需明確初始化它。
此方法提供了一種乾淨高效的方法來初始化 C 中的靜態資料成員,而無需訴諸醜陋的駭客或不必要的檢查在實例構造函數中。
以上是如何在沒有靜態建構子的情況下在 C 中初始化靜態資料成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!