zoukankan      html  css  js  c++  java
  • 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)的额外开销(只要定义一个预处理器符号就可以关闭多线程支持).总之,他比原始指针大且慢,而且使用辅助动态内存,但额外的执行成本却并不显著,"降低客户错误"的成效却是每个人都看得到.

  • 相关阅读:
    iOS API 概述
    iOS开发的一些奇巧淫技3
    iOS开发的一些奇巧淫技1&2
    iOS-一键拨号
    iOS层次架构
    简单block 和 代理
    iOS开发-单例GCD
    简单的归档、接档
    通知中心与本地通知
    安装linux centos 7.7 遇到 DRM:Pointer to TMDS table invalid
  • 原文地址:https://www.cnblogs.com/reasno/p/4752723.html
Copyright © 2011-2022 走看看