1.特殊變量函數
2.初始化方法code
因此,縱向來看,初始化方式主要有兩種:對象
橫向來看,不一樣數據類型的初始化方式分別爲:生命週期
class Test { public: Test():i(1), ri(i), ci(2), cd(0) {} // 對於通常常量型(非integral type)和引用型成員變量,必須經過初始化參數列表進行初始化 // 普通成員變量也能夠放在函數體中,但本質已不是初始化,而是一種普通的賦值運算,效率極低 private: int i; // 普通成員變量 // 初始化參數列表,函數體 int& ri; // 引用,初始化參數列表 const int ci; // 常量 // 類內初始值設定 // 初始化參數列表 const int& cri; // 常引用,初始化參數列表 const double cd; // 常量非integral types // 初始化參數列表 static int si; // 靜態很是量 // 類外,C++11以後的版本也能夠在類內部進行初始化 static const int sci; // 靜態常量(integral type) // 類外或者類內直接初始化 //static const int sci=100; static const double scd; // 靜態常量(非integral ) // 類外 };
static
修飾)、引用類型,在類內部便可實現初始化,在類外實現初始化的一定是static
類型(固然一部分的靜態成員,也即同時又是const和integral type的,可在類內初始值設定,這一語法特性並不是爲全部的編譯器所支持,因此一種推薦的作法,便是凡是static類型的,咱們總在類外進行初始化,哪怕它在類內已進行初始值設定,只要在類外初始化時不修改其值):注意:靜態變量的初始化並無static關鍵字 int Test::si = 0; const int Test::sci = 1; const double Test::scd = 99.0;
static
變量同樣,程序一運行就分配內存並初始化,生命週期和程序一致;