类设计者的核查表【文摘】
2017-11-02 本文已影响5人
赵者也
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++沉思录》