1.public继承可以分为函数接口继承和函数实现继承。对基类而言,成员函数的接口总是被继承。根据在基类中的声明及定义,分为三种类型:
- 纯虚函数:使派生类只继承其接口。可以为纯虚函数提供定义,但是调用时必须以ClassName::functionName()的方式调用。
- 非纯虚函数(普通虚函数):使派生类继承接口和缺省实现。
- 非虚函数(普通函数):使派生类继承接口和一份强制性实现。它不应当在派生类中重新定义。
2.初学者容易犯的两个错误:
(1)将所有函数声明为非虚函数;这样使派生类没有空间进行特化工作,特别是非虚的函数会带来更多问题。
(2)将所有函数声明为虚函数:这样做对接口类而言是正确的,但很多情况下公有的相同操作应当声明为非虚函数。
3.实例一:图形类继承体系:
实例二:飞机类继承体系: