ホームページ >バックエンド開発 >C++ >C で Java 静的ブロックを模倣する方法 : 初期化戦略と考慮事項

C で Java 静的ブロックを模倣する方法 : 初期化戦略と考慮事項

Susan Sarandon
Susan Sarandonオリジナル
2024-10-27 09:16:03990ブラウズ

How to Mimic Java Static Blocks in C  : Initialization Strategies and Considerations

C Java 静的ブロックと同等

Java では、静的ブロックは、クラスがインスタンス化される前に静的メンバーを初期化する便利な方法を提供します。ただし、C にはクラス内に静的ブロックがありません。

オプション 1: プロセス読み込み時の初期化

プロセス読み込み時に初期化を実現するには、任意の外部の静的変数を使用します。クラス。「翻訳単位スコープ」とも呼ばれます。

<code class="cpp">// translation-unit-scope-static-initialization.cpp
static_block {
    // Code to initialize your static variables
}</code>


オプション 2: クラスのインスタンス化時の初期化

C では初期化が許可されていないため非定数静的メンバーの場合は、間接的なアプローチが必要です。回避策は次のとおりです。

<code class="cpp">// static-initialized-via-base-class.cpp
class StaticInitialized {
public:
    static bool staticsInitialized = false;
    virtual void initializeStatics() = 0; 
};
​
class MyClass : private StaticInitialized {
    static int field1;
    static int field2;
​
private:
    void initializeStatics() override {
        // Code to initialize field1 and field2
    }
};</code>


C の静的変数の初期化順序は決定的ではないため、両方のオプションで初期化の順序が保証されないことに注意してください。

以上がC で Java 静的ブロックを模倣する方法 : 初期化戦略と考慮事項の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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