首頁 > 後端開發 > C++ > 主體

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

Susan Sarandon
發布: 2024-10-27 09:16:03
原創
875 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!