设计类时,下面的几点用来提醒设计者思考类是否设计的完美:
1 类需要一个无参的构造函数么?
如果只定义了一个有参的构造函数,那么编译器就不会自动添加默认构造函数了,那么如果此时下面语句就是不合法的(以point类为例):
point p;//不合法!
或者声明数组 point parray[100]; //不合法
2 类需要析构函数么?
如果类分配了资源,这些资源不会由成员函数自动释放,特别是在构造函数中,出现了new,那么必须要在析构函数中负责清除掉。
3 类需要虚析构函数么?
如果定义了一个要被继承的类(比如class B),那么这个类应该拥有虚析构函数,否则当构建了class D继承自class B后,delete 指向D对象的指针,会出错!
4 类需要赋值构造函数和复制构造函数么?
如果定义了析构函数,那么一般来说,都需要自己重新定义复制和赋值函数。其中,要首先检查有没有自我赋值的情况!
5 类函数或者形参需要const么?
复制构造函数和赋值构造函数不应该改变形参,所以应该加入const限定。
使用X::operator=(const X&),X::X(const X&). 另外,当方法不改变形参时,在形参前面加上const限制。或者方法不会改变对象本身时,可以在函数后面加上const限制。