ホームページ  >  記事  >  バックエンド開発  >  静的コンストラクターを使用せずに C で静的データ メンバーを初期化するにはどうすればよいですか?

静的コンストラクターを使用せずに C で静的データ メンバーを初期化するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-09 01:17:02689ブラウズ

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 は静的データ メンバー Letters_ を保持します。プログラムが開始されると、StaticStuff のコンストラクターが 1 回実行され、letters_ が正しい文字で自動的に初期化されます。その後、Elsewhere のインスタンスは、明示的に初期化する必要なく、StaticStuff の静的インスタンスを介して Letters_ にアクセスできます。

このメソッドは、醜いハッキングや不必要なチェックに頼ることなく、C で静的データ メンバーを初期化するクリーンで効率的な方法を提供します。インスタンス コンストラクター内。

以上が静的コンストラクターを使用せずに C で静的データ メンバーを初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。