类设计者的核查表【文摘】

1、类需要一个构造函数么?

2、数据成员是私有的么?

3、需要一个无参的构造函数么?

4、是不是每个构造函数初始化所有的数据成员?

5、类需要析构函数么?

6、类需要一个虚析构函数么?

当然,决不会用作基类的类是不需要虚析构函数的——“任何虚函数只在继承的情况下才有用。”

假设有:D public: B

则只要有人可能会对实际指向D类型对象的B*指针执行delete表达式,你就需要给B加上一个虚析构函数。

例:

B* pbd = new D;

delete pbd;

7、你的类需要复制构造函数么?

如果类在构造函数内分配资源,则可能需要一个显示的复制构造函数来管理资源;

如果不想用户能够复制类的对象,就声明复制构造函数(可能还有赋值操作符)为私有的。

8、你的类需要一个赋值操作符么?

需要复制的构造函数,多半会需要。

9、你的赋值操作符能正确地将对象赋给对象本身么?(要先保存旧值,再赋新值,再删除旧值。)

10、类需要定义关系操作符么?

11、删除数组时,你记得使用 delete[] 了么?

12、记得在复制构造函数和赋值操作符的参数类型中加上 const 了么?

13、如果函数有引用参数,他们应该是 const 引用么?

14、记得适当地声明成员函数为 const 的了么?

文字摘自《C++沉思录》

你可能感兴趣的:(类设计者的核查表【文摘】)