现在的位置: 首页 > 综合 > 正文

类的设计

2013年10月07日 ⁄ 综合 ⁄ 共 912字 ⁄ 字号 评论关闭

//类设计者的核查表

1>你的类需要一个构造函数吗?

 有一些类太简单,他们的结构就是他们的接口,所以不需要构造函数。但 是我们关心的是那些足够复杂的类,它们需要构造函数来隐藏它们的内部工作方式
 
2>你的数据成员是私有的吗?

 假如有两个处理长度的函数,它们应该有类似set_length和get_length的名字吗?或者它们应该有同样的名字length,而通过接受不同个数的参数来区分吗?修改擦黑功能度的函数应该返回void或者一个值吗?如果返回一个值,应该是长度的前一个值还是刚设的新值呢?又或者是某个完全不同的东西,譬如反映了处理请求是否成功?请选择一种规范,一致使用,并用文档清楚的保存

3>你的类需要一个无参的构造函数吗?

4>是不是每个构造函数初始化所有的数据成员?
 构造函数的用途就是用一种明确的状态来设置对象。对象的状态由对象的数据成员进行反映。因此每个构造函数都要负责为所有的数据成员设置经过明确定义的值。
 当然类会有一些数据只有在它们的对象存在一定时间之后才有意义

5>类需要析够函数吗?
 不是所有有构造函数的类都需要析够函数。如果深入考虑一个类要做些什么,那么类是否需要析够函数就十分明显了。应该问一问该类是否分配了资源,而这些资源又不是由成员函数自动释放的,这就足够了。特别是那些构造函数里包含了new 表达式的类,通常要在析够函数中加上相应的delete 表达式,所以需要一个析够函数

6>类需要一个虚析够函数
 有些类需要析够函数只是为了声明它们的析够函数是虚的。当然,决不会应作基类的类是不需要虚析够函数的:任何虚析够函数只有在继承的情况下才有用。但是请设想一下,你写 了一个B的类,而别人从它派生了一个类D,那么B何时需要一个虚析够函数?只要有人可能对实际指向D类型对象的B*指针执行delete 表达式,你就需要B加上一个虚析够函数。虚析够函数通常是空的

7>你的类需要复制构造函数吗 

 8>你的类需要一个赋值操作符吗?

 9>你的赋值操作符能正确地将对象赋给对象本身吗?

10>你的类需要定义关系操作符吗

11>删除数组时你记住了delete[]吗?

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

抱歉!评论已关闭.