设计class犹如设计type
每设计一个class时需要自我提问的一些方面:
1.新的class的对象应该如何被创建以及销毁(主要涉及重载operator new operator new[] operator delete operator delete [] );
2.对象的初始化以及赋值还如何实现以及差别(注意深度拷贝与浅拷贝,类中是否含有指针)
3.新的type得对象如果被pass-by-value传递,以为着什么。
4.新的type成员变量的合法值是什么,在相应的地方抛出异常。
5.新的class是否需要配合某些继承体系,影响声明的函数尤其是虚函数是否为virtual.
6.新的type需要什么样的转换,注意operator type()函数 以及 non-explicit-one-argument构造函数。
7.什么样的操作符对type是合理的是否需要设计成member函数。
8.你的新type有多么一般化 如果需要泛化采用class template.