雖然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 標誌確保初始化程式碼在建立類別的任何實例之前僅運行一次。
以上是如何在不使用類別的情況下在 C 中實作靜態程式碼區塊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!