c++构造函数的初始化列表

时间:2022-07-15 20:03:32

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;
};