class的设计就是type的设计。在定义一个新type之前,请考虑一下主题:
1.新type的对象应该如何被创建和销毁?
2.对象的初始化和赋值该有什么样的区别?
3.新type的对象如果被pass-by-value,意味着什么?这决定了copy构造函数的实现。
4.什么是新type的“合法值”?
5.你的新type需要配合某个继承图系么?
6.你的新type需要什么样的转换?
7.什么样的操作符和函数对新type而言是合理的?
8.什么样的标准函数应该驳回?比如驳回默认构造函数等。
9.谁该取用新type的成员?
10.什么是新type的“未声明接口”(指譬如效率、异常安全性等潜在的接口)?
11.你的新type有多么一般化?也许你不该定义一个新的class,而是新的class template。