1.继承(inheritance)
2.c++通过类派生(class derivation)的机制来支持继承
3.基类(base class)
4.派生类(derived class)
5.基类和派生类实例的集合称为类继承层次结构(hierarchy)
6.如果基类和派生类共享相同的共有接口, 则派生类被称做基类的子类型(subtype)
7.基类指针或引用可以直接引用其任何派生的类, 多态(polymorphism)
8.在运行时刻需要解析出被调用的函数, 这个解析过程被称为动态绑定(dynamic bindng) --缺省情况下, 函数实在编译时刻被静态解析的
9.c++中, 通过一种被称为虚拟函数(virtual function)的机制来支持动态绑定, 通过集成和动态绑定, 子类型多态性为面向对象的程序设计提供了基础
10.面向对象的程序设计提供了一种方案, 把类型解析的负担从程序员的身上转移到编译器上
11.类继承层次结构的主要好处是, 我盟可以针对抽象基类的共有接口进程编程, 而不是针对组成继承层次的个别类型
用户代码可以不受语言变化的影响 --多态和动态绑定
12.在c++中, 多态性只存在于子类继承层次中 --void*型的指针可以被描述为多态, 但是语言本身并没有显示的支持他们, 必须由程序员自己来管理
c++语言通过几种方式支持多态性
通过一个隐式转换, 从"派生类指针或引用"转到"其共有基类类型的指针或引用"
通过虚拟函数的机制
通过dynamic_cast和typeid操作符
if(SubClass* pSub = dynamic_cast<SubClass*>(pObj)) ...
13.抽象基类(abstract base class)
14.实体基类(concrete base class)
15.纯虚拟函数(pure virtual function)
16.覆盖(override)
17.c++语言为我们提供了一种语法结构, 通过它可以指明, 一个虚拟函数只是提供了一个可以被子类改写的接口
18.传递给缺省函数的值不是在运行时刻决定, 而是在编译时刻根据被调用函数的对象的类型决定
19.虚拟析构函数 --主要是为了能够用delete销毁基类的时候也能够保证调用派生类的析构函数, 要不然它只是调用基类的析构函数而已