c++中必须在构造函数初始化列表中进行初始化的类成员有3中情况:
1.引用/const类型的成员,如下:
class A{ public: A(int a = 0,int b = 0):m_item1(a),m_item2(b){}//引用或者const类型必须在初始化列表中进行初始化 private: const int m_item1; int &m_item2; };
2.没有默认构造函数的类 类型成员,如下:
class B{ public: B(int a = 0,int b = 0):m_a(a,b){}//在构造B之前先构造m_a private: A m_a; };
3.父类没有默认构造函数,子类的构造函数初始化列表必须先构造父类,如下:
class A{ public: A(int a = 0,int b = 0):m_item1(a),m_item2(b){}//没有默认构造函数 private: const int m_item1; int &m_item2; }; class B : public A{ public: B(int a = 0,int b = 0):A(a,b),m_c(a){}//在构造B之前先构造A private: int m_c; };