首頁 >後端開發 >C++ >如何在 C 中模仿 Java 靜態區塊:初始化策略和注意事項

如何在 C 中模仿 Java 靜態區塊:初始化策略和注意事項

Susan Sarandon
Susan Sarandon原創
2024-10-27 09:16:03987瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn