首頁 > 後端開發 > C++ > 如何在沒有靜態建構​​子的情況下在 C 中初始化靜態資料成員?

如何在沒有靜態建構​​子的情況下在 C 中初始化靜態資料成員?

Linda Hamilton
發布: 2024-11-09 01:17:02
原創
714 人瀏覽過

How Can You Initialize Static Data Members in C   Without a Static Constructor?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板