8 别让异常逃离析构函数
由于在C++中两个异常同时存在会导致未定义行为, 因此我们不应该让析构函数上报异常, 这是因为析构函数是会被自动调用的, 当一个对象析构而抛出异常时, 同个作用域的其它对象的析构也会被自动执行...这种方法的缺点是如果new的时候发生异常, 此时当前对象的指针已经被释放, 那么这个对象就会留下一个错误的指针
备份指针: 在一开始对指针进行备份, 然后new一个复制的内存, 当没有异常发生时才去释放原先的内存..., 同时在日常中通过重载调用运算来模拟指针方便开发
隐式类型转换可以写, 比较自然, 但是有时有危险
更常见的情景是写一个显式的get函数来获取原始指针
牢记RAII类不是为了封装数据存在的, 而是为了给原始指针加上资源回收的功能...24 若所有参数皆需类型转换, 请为此采用non-member函数
只有当参数被列于参数列中时, 这个参数才能参与隐式类型转换(*this不算在内)
当一个函数的所有参数都需要进行类型转换时(时常发生在运算符重载函数上..., 所以当自己的类型符合pimpl可以进行以下设计:
首先在类中定义一个公有的swap函数, 它负责交换指针的实现, 被其它函数调用.