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銷毀基類的時候也能夠保證調用派生類的析構函數, 要不然它只是調用基類的析構函數而已