设计优秀的class是一项艰巨的工作,因为设计好的type是一项艰巨的工作。好的type有自然的语法,直观的语义,以及一或多个高效实现品。在C++中,一个不良规划下的class定义恐怕无法到达上述任何一个目标。甚至class的成员函数的效率都可能感受到它们如何被声明的影响。
那么,如何设计高效的class呢?首先你必须了解你面对的问题。几乎每一个class都要求你面对以下提问,而你的会的往往导致你的设计规范:
- 新type对象应该如何被创建和销毁?
- 对象的初始化和对象的赋值该有什么样的差别?
- 新type对象如果被pass by value,意味着什么?
- 什么是新type的合法值?
- 你的新type需要配合某个继承体系吗?
- 你的新type需要什么样的转换?
- 什么样的操作符和函数对此新type而言是合理的?
- 什么样的标准函数应该驳回?
- 谁该取用新type成员?
- 什么是新type的未声明接口?
- 你的新type有多么一般化?
- 你真的需要应该新type吗?
这些问题不容易回答,所以定义出高效的class是一种挑战。
请记住
class的设计就是type的设计。在定义一个新type之前,请确定你已经考虑过本条款覆盖的所有讨论主题。