1.公有继承public 要保持IS --A的关系
也就是说,派生类继承基类,每一个基类对象同时也是一个派生类对象,但是每一个派生类对象不一定是基类对象。
大包含小的意思,基类的范围要比派生类的小
2.避免遮掩继承而来的名称。
如果基类中用到派生类的函数,我们希望在派生类中他是可见的,因此可以在派生类中写上 using BASE::FUN;
公有继承的时候派生类的名称会掩盖基类的名称,我们可以用using 进行声明他是基类的函数。
3.区分接口继承和实现继承
继承接口,接口中声明纯虚函数,这样这个函数就不能实例化,必须别其派生类实现具体细节。声明纯虚函数的类叫做抽象类。
纯虚函数只能指定接口继承。
公有继承下,派生类总是继承人基类的接口、
简谱的非纯虚函数继承,指定的是接口继承以及缺省实现继承。
非虚函数继承指定的接口继承以及强制性实现继承。
虚函数外覆器:定义一个公有的非虚函数来调用类中的私有虚函数。
4.绝壁不要重新定义继承而来的非虚函数。
虚函数是动态绑定的,因此当基类和派生类都调用某个继承自基类的虚函数的时候基类指针和派生类指针调用该函数都是调用的派生类的那个函数。
但是如果你调用的函数本身在基类里的时候就是非虚函数,那么调用的函数就不一样了。
适用于基类的每一个对象也同样适用于派生类,总之任何情况下都不应该重新定义继承而来的非虚函数。
5.不要重新定义继承而来而缺省参数值,因额为缺省参数值都是静态绑定的,,而虚函数,是动态绑定,因此是可以覆盖的。
6.私有继承一般是你希望你的派生类直接用基类已经准备妥当的某些特性。
7,明智的使用多继承
主要考虑到产生歧义以及对虚继承的需要,虚继承会导致增加大小,速度,初始化扥等复杂度的开销,