1. 必須使用初始化列表初始化一個引用成員;
class CBase { public: CBase(int a) : m_a(a) //正確,m_a是一個變量的引用,必須通過初始化列表初始化 { // m_a = a; //錯誤 cout << "m_a:" << m_a << endl; } public: int& m_a; };
2. 必須使用初始化列表初始化一個常量成員;
class CBase { public: CBase(int a) : m_a(a) //m_a是一個const常量,必須通過初始化列表初始化 { //m_a = a; //錯誤,此處相當於賦值操作,但是const是不可修改的,無法作為左值; } public: const int m_a; };
3. 初始化派生類的基類時,必須使用初始化列表進行初始化;
4. 當初始化話成員對象時,必須使用初始化列表進行初始化;
class CBase { public: CBase(int a) : m_a(a) //m_a是一個const常量,必須通過初始化列表初始化 { //m_a = a; //錯誤,此處相當於賦值操作,但是const是不可修改的,無法作為左值; } public: const int m_a; }; class CSub { public: CSub() : m_obj(88) //正確, 成員對象初始化 { cout << "this is m_obj::m_a = " << m_obj.m_a << endl; } public: CBase m_obj; };