成员初始化列表就是在类或者结构体的构造函数中,在参数列表后以冒号开头,逗号进行
分隔的一系列初始化字段。
class Model
{
private:
int id;
string name;
FaceImage face;
public:
A(int& inputID,string& inputName,FaceImage&inputFace):
id(inputID),
name(inputName),
face(inputFace){} // 成员初始化列表
};
因为使用成员初始化列表进行初始化的话,会直接使用传入参数的拷贝构造函数进行初始
化,省去了一次执行传入参数的默认构造函数的过程,否则会调用一次传入参数的默认构
造函数。所以使用成员初始化列表效率会高一些。
另外,有三种情况是必须使用成员初始化列表进行初始化的:
- 常量成员的初始化,因为常量成员只能初始化不能赋值
- 引用类型
- 没有默认构造函数的对象必须使用成员初始化列表的方式进行初始化