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

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

Barbara Streisand
リリース: 2024-11-07 20:25:03
オリジナル
372 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート