1.如果类之间存在继承关系,在编写上述基本函数时应注意以下事项:
1.1派生类的构造函数应在其初始化表里调用基类的构造函数。
1.2基类与派生类的析构函数应该为虚(即加 virtual 关键字)
1.3在编写派生类的赋值函数时,注意不要忘记对基类的数据成员重新赋值。
2. 严格的继承规则应当是:若在逻辑上 B 是 A 的“一种”,并且 A 的所有功能和属性对 B 而言都有意义,则允许 B 继承 A 的功能和属性。
3. 若在逻辑上 A 是 B 的“一部分”( a part of),则不允许 B 从 A 派生,而是要用 A 和其它东西组合出 B。
4. 对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const 引用传递”,目的是提高效率。例如将 void Func(A a) 改为 void Func(const A &a)。
对于内部数据类型的输入参数, 不要将“值传递”的方式改为 “const 引用传递” 。否则既达不到提高效率的目的, 又降低了函数的可理解性。例如 void Func(int x) 不应该改为 void Func(const int &x)。
5. const 成员函数: 任何不会修改数据成员的函数都应该声明为 const 类型。如果在编写 const 成员函数时,不慎修改了数据成员,或者调用了其它非 const 成员函数,编译器将指出错误,这无疑会提高程序的健壮性。
const 成员函数的声明看起来怪怪的:const 关键字只能放在函数声明的尾部,大概是因为其它地方都已经被占用了。