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