《Effective C++》 读书笔记之四 设计与申明

条款18:让接口容易被正确使用,不易被误用。

重点:

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

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

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

  4. tr1::shared_ptr支持定制型删除器。这可防范DLL问题,可被用来自动解除互斥锁等等。

2016-11-04 23:17:09

条款19:设计class犹如设计type。

设计class之前明确下面的问题:

  1. 新type的对象应该如何被创建和销毁?

  2. 对象的初始化和对象的赋值该有什么样的差别?

  3. 新type的对象如果被passed by value,意味着什么?copy构造函数用来定义一个type的pass-by-value该如何实现。

  4. 什么是新的type的合法值?

  5. 你的新type需要配合某个继承图系吗?与virtual有关

  6. 你的新type需要什么样的转换?

  7. 什么样的操作符和函数对此新的type而言是合理的?

  8. 什么样的标准函数应该驳回?那些正是你必须声明为private的。

  9. 谁该取用新type的成员?

  10. 什么是新type的“未声明接口”?

  11. 你的新type有多么一般化?如果真的很一般化,也就是定义的不是一个type,而是一整个types家族,那么应该定义一个新的template。

  12. 你真的需要一个新的type吗?

2016-11-04 23:23:37