定义:
类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。
因为公有继承,派生类得到了基类除了构造函数,析构函以外的所有成员。这样,公
有派生类实际具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解
决。
类型兼容规则所指的替代包括以下的情况:
1.派生类的对象可以隐含转换为基类的对象。
2.派生类的对象可以初始化基类的引用。
3.派生类的指针可以隐含转化为基类的指针。
注意:在替代之后,派生类的对象就可以作为基类的对象使用,但只能使用从基类继承
的成员。
例如:
class B{...}
class D:public B{...}
B b1,*pb1;
D d1;
这时,
(1)派生类对象就可以隐含转换为基类的对象,即使用派生类对象中从基类继承来的成
员,逐个赋值给基类对明象成员:
b1 = d1;
(2)派生类的对象也可以初始化基类对象的引用:
B &rb = d1;
(3)派生类对象的地址也可以隐含转化为指向基类的指针:
pb1 = &d1;
好处:
由于类型兼容规则的引入,对于基类及公有派生类的对象,可以使用相同的函数统一进行
处理,因为当函数的形参为基类的对象(或引用、指针)时,实参可以派生类的对象(或指针)
,而没有必要为每一个类设计一个单独的模块,大大提高了程序的效率,这正是c++的又一特色,
即多态性,可以说类型兼容规则是多态的重要基础之一。