想要设计出高效的classes首先你必须了解你面对的问题。几乎每一个class都要求你面对一下提问,而你的回答往往导致你的设计规范:
- 新type的对象应该如何被创建和销毁?
构造函数、析构函数应该怎么写
- 对象的初始化和对象的赋值该有什么样的差别?
对象的赋值要注意资源的拷贝,初始化直接调用构造函数,而赋值会调用拷贝构造函数或赋值操作符=
- 新type的对象如果被passed by value(以值传递),意味着什么?
调用了拷贝构造函数,注意深拷贝和浅拷贝
- 什么是type的"合法值"?
- 你的新type需要配合某个继承图系(inheritance graph)吗?
多态,如果继承自现有的classes,你就受到那些classess的设计的束缚,特别是受到“它们的函数是virtual或non-virtual”的影响。如果其他类继承自你的class,那么你所声明的函数--尤其是析构函数--是否为virtual
- 你的新type需要什么样的转换?
显式和隐式类型转换
- 声明样的操作符和函数对此type而言是合理的?
这决定这我们需要声明那些函数
- 什么样的标准函数应该驳回?
那些正是你必须声明为private者
- 谁该取用新type的成员?
这个提问可以帮助你决定哪个成员为public,哪个为protected,哪个为private。它也帮助你决定哪一个classes和/或function应该是你的friends,以及将它们嵌套于另一个之内是否合理
- 什么是新type的"未声明接口"(undecleared interface)?
- 你的新type有多么一般化?
是否要定义这个类,而是创建class template
时间: 2024-10-23 09:00:42