Effective C++ 条款18 让接口容易被正确使用,不易被误用
1. 好的借口很容易被正确使用,不易被误用.
2. "促进正确使用"的方法包括借口的一致性(例如STL容器用于统计大小的函数都名为size)以及与内置类型的行为兼容(例如重载*返回的值应加const限定以防被篡改).
3. 阻止误用的办法包括建立新类型,限制类型上的操作,束缚对象值(使用枚举,static 成员函数返回特定对象),以及消除客户的资源管理责任(用智能指针替代原始指针做参数和返回值)
4. shared_ptr支持定制性删除器(custom deleter),这可防范DLL问题("对象在动态链接库(DLL)被new创建,却在另一个DLLL内被delete销毁"),因为它缺省的delete是来自"shared_ptr"诞生所在的那个DLL的delete.最常见的shared_ptr实现品来自boost,boost的shared_ptr是原始指针的两倍大,以动态分配内存作为簿记用途和"删除器之专属数据",以virtual形式调用删除器,并在多线程程序修改引用次数时蒙受线程同步化(thread synchronization)的额外开销(只要定义一个预处理器符号就可以关闭多线程支持).总之,他比原始指针大且慢,而且使用辅助动态内存,但额外的执行成本却并不显著,"降低客户错误"的成效却是每个人都看得到.