在C 語言中,靜態資料類別中的成員不能直接在類別定義中初始化,某些特定的成員除外
靜態資料成員分配在程式的記憶體段中,並在程式的所有實例之間共用班級。 C 標準禁止它們的類別內初始化,以防止在多個翻譯單元中對相同變數進行多個定義。
同樣,類別中的靜態陣列無法在類別中初始化,因為陣列佔用連續的記憶體區塊。允許類別內初始化將導致在每個翻譯單元中建立相同陣列的多個副本,從而導致意外行為。
靜態常數整型和枚舉類型是這些規則的例外。這些類型可以在類別中初始化,因為它們被視為編譯時常數,並且它們的值在編譯時已知。
enum { arrsize = 2 };
static const int c[arrsize] = { 1, 2 };
以上是為什麼不能直接在 C 類別中初始化靜態成員和陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!