在物件導向程式設計中,靜態資料成員,稱為類別級變量,在類別的所有實例之間共用。與存在於每個物件中的常規資料成員不同,靜態資料成員存在於任何物件實例之外。
為了確保其唯一且一致的位址分配,靜態資料成員需要在程式中進行單一明確定義。此定義不能放置在類別定義中,因為類別定義通常包含在多個物件檔案中,從而導致潛在的重複定義。因此,靜態資料成員定義必須單獨聲明。
非靜態資料成員初始化(NSDMI)允許程式設計師為非靜態指定一個初始值類別定義中的資料成員。然而,這只是初始化,而不是定義。資料成員的實際定義,無論是靜態或非靜態,都發生在類別之外。
非靜態資料成員儲存在它們所屬的物件內。它們的生命週期從物件的建構函數開始。另一方面,靜態資料成員獨立於物件而存在,從程式開始就駐留在固定的位址處。它們在編譯時分配記憶體。
定義靜態資料成員類似於在 C 中宣告 extern 變數。 extern 變數聲明,例如 extern int i;,表示變數 i 在程式的其他位置聲明。同樣,靜態資料成員是在類別定義中聲明的,但它們的定義是使用 int X::i = 0; 等語法單獨提供的,其中 X 是類別名,i 是靜態資料成員。
以上是為什麼靜態資料成員需要在 C 中進行類外初始化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!