1.類中包含以下成員,必須放在初始化列表位置進行初始化:
? ? ? ? ? ? ? 1. 引用成員變量
? ? ? ? ? ? ? ?2.const成員變量
? ? ? ? ? ? ? ?3. 自定義類型成員(且該類沒有默認構造函數時 )
2.?成員變量在類中聲明次序就是其在初始化列表中的初始化順序,與其在初始化列表中的先后次序無關
內置類型成員?
1.如果沒有在類中聲明默認值,也沒有初始化列表顯式賦值,那么就直接不管內置類型的初始化了,沒有對應初始化指令,是內存殘留值。
自定義類型
1.自定義類型不能在類中聲明默認值,如果沒有顯式調構造,編譯器會去自動調自定義類型的默認構造,如果不存在默認構造就報錯
靜態成員變量為什么必須在類外初始化?
1. 靜態成員的核心特性
-
共享性:類的所有對象共享同一份靜態成員。
-
生命周期:存在于程序的整個生命周期(類似全局變量)。
-
存儲位置:不在對象內存中,而是存儲在全局/靜態數據區
2.語言規則要求
-
聲明定義分離:
-
類內:僅作聲明(告訴編譯器存在這個靜態成員)。
-
類外:實際分配內存并初始化(定義)
-
3.初始化語法規則
基本形式
cpp
// 類內聲明 class MyClass { public:static int s_value; // 聲明(不分配內存) };// 類外定義和初始化 int MyClass::s_value = 42; // 必須出現在.cpp文件中