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

被折叠的 条评论
为什么被折叠?



