条款
19
:设计
class
犹如设计
type
C++
就像在其它面向对象编程语言一样,当你定义一个新
class
,也就定义了一个新
type
。这意味着你并不只是类的设计者,更是类型的设计者。重载函数和操作符、控制内存的分配和归还、定义对象的初始化和终结
......
全部在你手上。
设计优秀的类是一项艰巨的工作,因为涉及好的类型是一项艰巨的工作。好的类型有自然的语法,直观的语义,以及一或多个高效实现品。
设计一个良好的类,或者称作类型,考虑一下设计规范:
- 新类型的对象应该如何被创建和销毁?
- 对象的初始化和对象的赋值该有什么样的差别?
- 新类型的对象如果被passed by value(值传递),意味着什么?
- 什么是新类型的“合法值”?
- 你的新类型需要配合某个继承图系吗?
- 你的新类型需要什么样的转换?
- 什么样的操作符和函数对此新类型而言是合理的?
- 什么样的标准函数应该驳回?
- 谁该取用新类型的成员?
- 什么是新类型的“未声明接口”?
- 你的新类型有多少一般化?
- 你真的需要一个新类型吗?
请记住:
- Class的设计就是type的设计。在定义一个新的type之前,请确定你已经考虑过本条款覆盖的所有讨论主题。