对于自定类型, 则应该在构造函数完善地初始化
对于类的成员, 尽可能不要在构造函数内再初始化自己的元素, 因为在进入构造函数之前自定类型就会被调用默认初始化了, 构造函数内进行的实际上是拷贝构造, 但又要注意内置类型并不会调用默认初始化...如果希望自定成员不要默认初始化, 那么应该在初值列中进行初始化, 这会覆盖掉编译器的设置, 即便是默认初始化我们也可以不传递参数从而显式进行默认初始化
因此为了防止遗漏, 我们可以对每个类成员都在初值列中进行初始化...如果拷贝构造是以值形式传入参数的话, 还可以直接将当前对象数据与传值进入的对象进行交换
12 复制对象时勿忘其每一个成分
当你选择实现自己的拷贝构造函数时, 一定要手动复制所有的局部变量, 同时调用所有基类合适的拷贝函数...如果有一些成员变量没有在初值列中进行拷贝, 那么此时对象将会进入局部拷贝状态
如果只拷贝了成员变量而没有调用基类的拷贝函数, 那么此时基类部分将会被默认初始化, 也属于一种局部拷贝
很多时候基类的拷贝函数与派生类的拷贝函数会有很多代码的重叠部分..., 比较自然, 但是有时有危险
更常见的情景是写一个显式的get函数来获取原始指针
牢记RAII类不是为了封装数据存在的, 而是为了给原始指针加上资源回收的功能, 所以不必给RAII类加太多功能
16