C はクラス内で静的コード ブロックを直接サポートしていませんが、回避策は外部の静的コード ブロックを利用することです。クラス。このアプローチにより、クラスのロード中、または含まれる DLL のロード時にコードを実行できます。
これを実現するには、静的翻訳単位スコープのブロック (通常はクラスの実装ファイル内)。例:
<code class="cpp">static_block { // Here you can perform initialization code std::cout << "Hello static block world!\n"; }</code>
上記のように static_block を使用すると、囲まれたコードは main() 関数の前に実行されます。
このオプションについては、次のクラス構造を考慮してください:
<code class="cpp">class StaticInitialized { public: static bool staticsInitialized = false; virtual void initializeStatics(); StaticInitialized() { if (!staticsInitialized) { initializeStatics(); staticsInitialized = true; } } }; class MyClass : private StaticInitialized { public: static int field1; static int field2; protected: void initializeStatics() { // Here you can perform initialization code specific to MyClass field1 = 42; field2 = 100; } };</code>
この例では、initializeStatics() 関数は仮想関数であり、特定の初期化ロジックの派生クラスでオーバーライドできます。 StaticsInitialized フラグにより、クラスのインスタンスが作成される前に初期化コードが 1 回だけ実行されることが保証されます。
以上がクラスを使用せずに C で静的コード ブロックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。