首頁 >後端開發 >C++ >如何在 C 中正確初始化靜態成員?

如何在 C 中正確初始化靜態成員?

Barbara Streisand
Barbara Streisand原創
2024-12-14 05:51:10189瀏覽

How Can I Properly Initialize Static Members in C  ?

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

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