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

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++沉思录》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,537评论 1 51
  • 本文博客园地址:http://www.cnblogs.com/xiongxuanwen/p/4290086.htm...
    先之阅读 863评论 0 5
  • 1. 让自己习惯C++ 条款01:视C++为一个语言联邦 为了更好的理解C++,我们将C++分解为四个主要次语言:...
    Mr希灵阅读 2,859评论 0 13
  • 你说过你不将就,为何偏偏四处招惹胭脂红粉?你说过你要等她,为何偏偏要边走边寻找。口口声声爱入骨髓,心心念念等她走回...
    扎如阅读 194评论 0 0
  • 刀光剑影,鼓角争鸣。 我又一次回到那黄尘古道,烽火边城。 孩儿已睡下,我走出营帐。 月很圆也很美,渐渐...
    微初尘阅读 284评论 0 0