每一个使用C++设计类时,都有必要将下面的14条准则烂熟于心:

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

2. 你的数据成员是私有的吗?

通常公有的数据成员不是什么好事

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

如果一个类已经有了构造函数,编译就不会提供默认的无参构造函数,如果需要必须显示地写一个无参的构造函数

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

构造函数的用途就是用一种明确定义的状态来设置对象,而对象的状态由对象的数据成员进行反应,因此构造函数都要负责为所有的数据成员设置经过明确定义的值。当然也会有写例外,类会有一些数据成员,他们只在对象存在一定时间后才会有意义。

5. 类需要析构函数吗?

应该确认类是否分配了资源,这些资源会不会由成员函数自动释放,特别那些构造函数中使用了new表达式的,通常需要在析构函数中使用delete表达式来显式地释放资源

6.类需要一个虚析构函数吗?

任何虚函数只有在继承的情况下才会有用!

7. 类需要复制构造函数吗?

通常有析构函数的类也需要一个复制构造函数!

8. 类需要一个赋值操作符吗?

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

String& String::operator =(const String& s) 
{
     if (&s != this) {
           delete[] this;
           data = new char[strlen(s.data) + 1];
           strcpy(data, s.data);
    }
    return *this;
}

10. 类需要定义关系操作符吗?
11. 删除数组时请记住用delete[]
12. 记得在复制构造函数和赋值操作符的参数类中加上const
13. 如果函数有引用参数,它们应该是const引用吗?
14. 记得适当地声明成员函数为const了吗?

来自yaronspace.cn  本文链接:http://yaronspace.cn/blog/archives/1271