好的接口很容易被正确使用,不容易被误用。你应该在你IDE所有接口中努力达成这些性质。

“促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容。

“阻止误用"的办法包括建立新类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。

tri::shared_ptr支持定制型删除器(custom deleter)。这可防范DLL问题,可被用来自动解除互斥锁(mutexes;见条款14)等等。

转载于:https://www.cnblogs.com/wen-ge/p/4322292.html

Effective C++ -----条款18:让接口容易被正确使用,不易被误用相关推荐

  1. 读书笔记 effective c++ Item 18 使接口容易被正确使用,不容易被误用

    1. 什么样的接口才是好的接口 C++中充斥着接口:函数接口,类接口,模板接口.每个接口都是客户同你的代码进行交互的一种方法.假设你正在面对的是一些"讲道理"的人员,这些客户尝试把 ...

  2. Effective C++条款粗略总结

    文章目录 Effective C++ 1.类/结构体 2.资源管理 3.实现 4.模板与泛型编程 5.定制new和delete 6.其他 Effective C++ 1.类/结构体 1.把C++看成一 ...

  3. Effective C++条款39:明智而审慎地使用private继承(Use private inheritance judiciously)

    Effective C++条款39:明智而审慎地使用private继承(Use private inheritance judiciously) 条款39:明智而审慎地使用private继承 1.pr ...

  4. 【Effection C++】读书笔记 条款18~条款19

    [Effective C++]Part4 设计与声明 条款18:让接口容易被正确使用,不易被误用 好的接口容易被正确使用,不易被误用 促进正确使用的方法包括有接口的一致性,以及与内置类型的行为兼容 阻 ...

  5. Effective C# 原则18:实现标准的处理(Dispose)模式(译)

    Effective C# 原则18:实现标准的处理(Dispose)模式 我们已经讨论过,处理一个占用了非托管资源对象是很重要的.现在是时候来讨论如何写代码来管理这些类占用的非内存资源了.一个标准的模 ...

  6. Effective C++条款40:明智而审慎地使用多重继承(Use multiple inheritance judiciously)

    Effective C++条款40:明智而审慎地使用多重继承(Use multiple inheritance judiciously) 条款40:明智而审慎地使用多重继承 1.多重继承的两个阵营 2 ...

  7. effective c++条款11扩展——关于拷贝构造函数和赋值运算符

    effective c++条款11扩展--关于拷贝构造函数和赋值运算符 作者:冯明德 重点:包含动态分配成员的类 应提供拷贝构造函数,并重载"="赋值操作符. 以下讨论中将用到的例 ...

  8. Effective C++条款09:绝不在构造和析构过程中调用virtual函数

    Effective C++条款09:绝不在构造和析构过程中调用virtual函数(Never call virtual functions during construction or destruc ...

  9. effective c++条款44 将与参数无关的代码抽离templates

    effective c++条款44 将与参数无关的代码抽离templates 首先了解这个条款的含义:使用template可能导致代码膨胀,二进制码会带着重复(或者几乎重复)的代码.数据,或两者.其结 ...

  10. Effective C++ 条款02:尽量使用const,enum,inline替换#define

    Effective C++ 条款02:尽量使用const,enum,inline替换#define 用另一句话说:用编译器代替预处理器比较好. 举个例子:加入定义一个常量: #define ASPEC ...

最新文章

  1. SQL执行并返回执行前/后结果
  2. Matlab GUI 如何自动缩放
  3. python transformers_transformers 安装
  4. 【android9.0】system/core下的usbhost模块无法输出log到logcat
  5. bzoj 5090 组题
  6. 深入理解JavaScript的闭包特性如何给循环中的对象添加事件
  7. leetcode 611. Valid Triangle Number | 611. 有效三角形的个数(Java)
  8. java xml 画表格_用js+xml自动生成表格的东西
  9. Ignite 配置更新Oracle JDBC Drive
  10. Javascript动态函数
  11. 专注企业市场 或是网盘危机的有效出路
  12. Abaqus帮助文档翻译——启动和退出Abaqus/CAE
  13. 黑马python15期解压密码_2018年传智播客黑马python+人工智能 15期
  14. 物联网毕业设计 太空游戏机设计与实现
  15. 电脑所有的浏览器都上不了网怎么解决
  16. 用Leangoo管理用户故事
  17. 系统分析师的必备素质和技能
  18. matlab音乐实训心得,matlab实训心得体会
  19. 被裁了!39 岁阿里 P9,攒下 1.5 亿....
  20. LeetCode 834

热门文章

  1. AttributeError: module ‘tensorflow._api.v2.train‘ has no attribute ‘Optimizer‘
  2. DenseNet:比ResNet更优的CNN模型
  3. Anscombe's Quartet 问题
  4. cloudquery.php态势感知,CloudQuery v1.3.4 版本更新
  5. nemesis什么车_TSC名车品牌将推全新Nemesis全球最强超跑
  6. 有名内部类和匿名内部类的用法
  7. chrome 模拟点击_详解爬虫模拟登陆的三种方法
  8. kubernetes service的作用、类型、关系和工作原理ClusterIp、NodePort、LoadBalance、ExternalName
  9. kubernetes 查看日志方法
  10. css3背景颜色样式,css3的关于背景的设置样式