如何正确的使用继承和实现是本章说明的重点。
public继承等同于is-a
对public继承,所有base的特性,在derived上都适用
Deried中的函数会掩盖base中的函数,不论函数是成员函数、虚函数亦或是纯虚函数(不同作用域的函数,名称相同也不构成重载)
使用 using base::f 的语法在Deried中强制使用base中被掩盖的函数
一定要记清楚,Deried中使用base中的同名函数就违背is-a法则
non-virtual:指定接口继承和强制实现
virtual:指定接口继承和一个缺省实现版本
pure-virtual分两种情况:
没有函实现:指定接口继承
有函数实现:指定接口继承和一个缺省实现版本(加作用域调用)------ 和virtual相同