分类:
2009-03-28 16:29:47
设计类的核查表:
1.Q:你的类需要一个构造函数吗?
2.Q:你的类的数据成员是私有的吗?
3.Q:你的类需要一个无参的构造函数吗? A:如果一个类已经有了构造函数,而你想声明该类的对象可以不必显示的初始化他们,则必须显示的写一个无参的构造函数
4.Q:是不是每个构造函数初始化所有的数据成员? A:每个构造函数都要负责为所有的数据成员设置经过明确定义的值。如果构造函数没有做到这一点,就很可能导致错误。
5.Q:类需要析构函数吗? A:不是所有的类都需要析构函数。应该问一问该类是否分配了资源,而这些资源会不会由成员函数自动释放,这就够了。
6.Q:类需要一个虚析构函数吗? A:有些类需要虚析构函数只是为了声明他们的析构函数是虚的。当然,绝不会用作基类的类是不需要虚析构函数的:任何虚函数只在继承的情况下才有用。
7.Q:你的类需要复制构造函数吗? A:很多时候答案是“不”, 但有时候答案是“是”。关键在于复制该类的对象是否就相当于复制其数据成员和基类对象。如果不相当,就需要复制构造函数。
8.Q:你的类需要一个赋值操作符吗?如果需要复制构造函数,同理多半也会需要一个赋值操作符。如果不想用户能够设置类中的对象,就将赋值操作符私有化。
9.Q:你的赋值操作符能正确地将对象赋给对象本身吗?
10.Q:你的类需要定义关系操作符吗?如果你的类逻辑上支持相等操作,那么提供operator==和operator!=就可能会很有好处。
11.Q:删除数组时你记住了用delete[]吗?
12.Q:记得在复制构造函数和赋值操作符的参数类型中加上const了吗?
13.Q:如果函数有引用参数,它们应该是const引用吗?只有当函数想改变参数时,它才应该有不用const声明的引用参数。
14.Q:记得适当地声明成员函数为const了吗?