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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-07 20:25:03392ブラウズ

How to Initialize Static Data Members in C   Without Using the Instance Constructor?

静的初期化: 総合ガイド

オブジェクト指向プログラミングでは、静的データ メンバーはクラスのすべてのインスタンス間で共有されます。通常、これらはインスタンス コンストラクター内で初期化されます。ただし、インスタンス コンストラクターに依存せずに静的データ メンバーを設定したい場合はどうすればよいでしょうか?

静的コンストラクターの動作をエミュレートするには、静的データをカプセル化する別のクラスを作成します。たとえば、次のクラスについて考えてみます。

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 中国語 Web サイトの他の関連記事を参照してください。

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