總結
- 初始化的概念:創建變量時賦予它一個值(不同於賦值的概念)
- 類的構造函數控制其對象的初始化過程,無論何時隻要類的對象被創建就會執行構造函數
- 如果對象未被用戶指定初始值,那麼這些變量會被執行默認初始化,默認值取決於變量類型和定義變量的位置
- 無論何時隻要類的對象被創建就會執行構造函數,通過顯式調用構造函數進行初始化被稱為顯式初始化,否則叫做隱式初始化
- 使用等號(=)初始化一個類變量執行的是拷貝初始化,編譯器會把等號右側的初始值拷貝到新創建的對象中去,不使用等號則執行的是直接初始化
- 傳統C++中列表初始化僅能用於普通數組和POD類型,C++11新標準將列表初始化應用於所有對象的初始化(但是內置類型習慣於用等號初始化,類類型習慣用構造函數圓括號顯式初始化,vector、map和set等容器類習慣用列表初始化)
初始化不等於賦值
初始化的含義是創建變量時賦予其一個初始值,而賦值的含義是把對象的當前值擦去,並用一個新值替代它。
C++定義瞭初始化的好幾種不同形式,例如我們定義一個int變量並初始化為0,有如下4種方式:
int i = 0;
int i = {0};
int i{0};
int i(0);