条款35:确定你的public inheritance,模塑出"isa"的关系
1.如果class Derived以public的形式继承class Base,那就等于告诉编译器每一个class Derived类型的对象同时也是一个class Base的对象,反之并不成立。
两个经典案列:
a.令企鹅Penguin继承鸟类Bird
b.令正方形Square继承长方形Rectangle
条款36:区分接口继承(interface inheritance)和实现继承(implementation inheritance)
1.声明一个纯虚函数的目的是为了让derived classes只继承其接口。纯虚函数也可以提供实现。
2.声明一般(非纯)虚拟函数的目的,是为了让derived classes继承该函数的接口和缺省行为。Derived类继承函数接口提供适合自身类的函数定义,要么使用缺省行为,即Base提供的函数定义。
3.声明非虚拟函数的目的是为了令derived classes继承函数的接口及其实现。Derived类使用Base类提供的函数接口和实现,自身不会去继承和实现。
阅读(996) | 评论(0) | 转发(0) |