构造函数初始化列表以一个冒号开始,接着以逗号分隔的数据成员列表。
如:
struct RpcClientOptions {
int work_thread_num;
int callback_thread_num;
RpcClientOptions():
work_thread_num(4)
, callback_thread_num(4)
{}
}
初始化列表与在构造函数体内进行复制的区别?
1、对内置数据类型,两种方式在效率和性能上没有太大区别。
2、对自定义类型,两种方式效率性能有较大区别,原因在于:
在初始化列表中就是进行对象的构造工作,然后在构造函数体内是进行赋值,这时又调用赋值操作符才能完成,消耗较大。
3、对于const成员和引用成员必须在初始化列表中初始化,否则会出错。
如 const 和 int& 在类中成员。
简单来说,就是,类的构造函数中,在初始化列表进行构造操作,在构造函数体内是赋值操作。