Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8588
  • 博文数量: 6
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-28 15:22
文章分类
文章存档

2009年(6)

我的朋友
最近访客

分类:

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了吗?

阅读(380) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~