声明时默认成员初始化
class Client {
private:
int chunks_in_flight_ = 0;
};
大概是上面这样的,这种初始化会被传播到所有的这个类的构造方法中(包括c++自己生成的).这种初始化对于struct也一样适用
这个初始化在构造函数函数体执行前执行.
假如成员是一个对象,这个对象的初始化写法= {} ()
都会调用构造方法(不是拷贝复制构造)
成员初始化重写
特定构造函数中明确指明了的成员的初始化会覆盖声明时默认成员初始化,比如
class Client {
public:
Client():chunks_in_flight_ (100){};
private:
int chunks_in_flight_ = 0;
};
chunks_in_flight_ 的值会是100,且int chunks_in_flight_ = 0;
这一句根本不会执行.
当然如果某个构造函数没有在构造函数声明里写chunks_in_flight_ 时,这句还是能执行的.
总结
声明时默认成员初始化并不能帮助提高效率,但是能帮助减少错误.