每一个使用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了吗?