C 中的靜態成員初始化
在 C 中,在類別定義中定義靜態成員可能是令人困惑的主題。本文解決了有關 C 中靜態變數初始化的問題,探討為什麼禁止類別內初始化以及如何正確初始化它們。
1.禁止類別內初始化
當嘗試在類別宣告中定義公共靜態變數時,如下所示,可能會出現編譯錯誤:
public: static int j = 0;
這是因為C 標準禁止在類別宣告中初始化非常量靜態成員,如錯誤訊息所述:「ISO C禁止類別內初始化非常量靜態成員'j'。在類別聲明中初始化。這是允許的,因為 const 成員被視為編譯時常數,並且必須使用編譯時已知的值進行初始化。
3. C 中靜態變數的初始化
在 C 中,靜態變數不會像在 C 中那樣自動初始化為零。要在 C 中初始化靜態變量,必須在類別外部明確定義它們的初始值聲明,通常在單獨的來源檔案 (.cpp) 中。
例如,要初始化上面聲明的靜態變數j,您可以將程式碼修改為如下:
結論
C 中,由於需要靈活地在外部初始化靜態變數,因此禁止在類別內初始化非常量靜態成員類別宣告。然而,常數靜態成員可以在類別聲明中初始化。 C 中靜態變數不會自動初始化為零;它們的初始值必須明確定義。// Header file class Test { public: static int j; }; // Source file int Test::j = 0;
以上是如何在 C 中正確初始化靜態成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!