例如包含了引用成员的类和包含const成员的类都不会生成默认的拷贝构造函数
6 若不想使用编译器自动生成的函数, 就该明确拒绝
拒绝编译器自动生成函数的传统方法是自己声明一个private的对应函数然后固定不去实现它..., 最好令重载的赋值运算符以引用的形式返回*this
这只是个协议, 但最好遵守
11 在operator=中处理"自我赋值"
当对象中存在指针申请的空间时, 在赋值运算符中我们一般都会释放旧空间, 然后创建一份和待复制内存相同的内存...这种方法的缺点是如果new的时候发生异常, 此时当前对象的指针已经被释放, 那么这个对象就会留下一个错误的指针
备份指针: 在一开始对指针进行备份, 然后new一个复制的内存, 当没有异常发生时才去释放原先的内存...weak_ptr: 不参与引用计数, 与shared_ptr一起使用
14 在资源类中小心Copying行为
这一条是当你不得不自己建立资源管理类的时候要注意的
如果对RAII进行复制是不合理的, 那么就应该禁止它..., 所以当自己的类型符合pimpl可以进行以下设计:
首先在类中定义一个公有的swap函数, 它负责交换指针的实现, 被其它函数调用.