Java 静的ブロックは、クラスの静的メンバーを初期化する便利な方法を提供します。ただし、 C にはクラス内に明示的な静的ブロック メカニズムがありません。これに対処するために、両方のシナリオに対して同等の解決策を提示します。
C では、翻訳単位でクラス外の静的ブロックが許可されます範囲。マクロ手法を使用すると、このようなブロックを次のように定義できます。
<code class="cpp">static_block { // Initialization code }</code>
このシナリオでは、次のことを実現できます。シングルトン設計パターンのバリエーションを使用したクラス内での静的メンバーの初期化:
<code class="cpp">class StaticInitialized { static bool initialized; virtual void initializeStatics(); }; class MyClass : private StaticInitialized { static int field1; static int field2; void initializeStatics() { // Initialization code } };</code>
このアプローチでは、クラスの最初のインスタンス化時に呼び出される非静的コンストラクターを利用して、静的メンバーを初期化します。
この解決策には、関数呼び出しで初期化されるダミー変数を定義することが含まれます。静的ブロック コードは、この関数の本体内に配置されます。これにより、他の静的ブロックとの競合が防止されます。採用されたマクロ機構により、各ブロックの一意性が保証されます。
以上がC で Java 静的ブロックを模倣するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。