1、物件導向程式設計基於三個基本概念:資料抽象、繼承和動態繫結。在 c++ 中,用類進行資料抽象,用類派生從乙個類繼承另乙個:派生類繼承基類的成員。動態繫結使編譯器能夠在執行時決定是使用基類中定義的函式還是派生類中定義的函式。
15.1. 物件導向程式設計:概述
1、物件導向程式設計的關鍵思想是多型性(polymorphism)。之所以稱通過繼承而相關聯的型別為多型型別,是因為在許多情況下可以互換地使用派生型別或基型別的「許多形態」。正如我們將看到的,在 c++ 中,多型性僅用於通過繼承而相關聯的型別的引用或指標。
繼承
1、通過繼承我們能夠定義這樣的類,它們對型別之間的關係建模,共享公共的東西,僅僅特化本質上不同的東西。派生類(derived class)能夠繼承基類(base class)定義的成員,派生類可以無須改變而使用那些與派生型別具體特性不相關的操作,派生類可以重定義那些與派生型別相關的成員函式,將函式特化,考慮派生型別的特性。最後,除了從基類繼承的成員之外,派生類還可以定義更多的成員。
2、在 c++ 中,基類必須指出希望派生類重寫哪些函式,定義為 virtual 的函式是基類期待派生類重新定義的,基類希望派生類繼承的函式不能定義為虛函式。
動態繫結
1、在 c++ 中,通過基類的引用(或指標)呼叫虛函式時,發生動態繫結。引用(或指標)既可以指向基類物件也可以指向派生類物件,這一事實是動態繫結的關鍵。用引用(或指標)呼叫的虛函式在執行時確定,被呼叫的函式是引用(或指標)所指物件的實際型別所定義的。
c primer閱讀筆記 15章 4
15.4.建構函式和複製控制 1 建構函式和複製控制成員不能繼承,每個類定義自己的建構函式和複製控制成員。15.4.1.基類建構函式和複製控制 1 本身不是派生類的基類,其建構函式和複製控制基本上不受繼承影響。15.4.2.派生類建構函式 1 派生類的建構函式受繼承關係的影響,每個派生類建構函式除了...
c primer閱讀筆記 15章 5
15.5.繼承情況下的類作用域 1 在繼承情況下,派生類的作用域巢狀在基類作用域中。如果不能在派生類作用域中確定名字,就在外圍基類作用域中查詢該名字的定義。正是這種類作用域的層次巢狀使我們能夠直接訪問基類的成員,就好象這些成員是派生類成員一樣。15.5.1.名字查詢在編譯時發生 1 物件 引用或指標...
c primer閱讀筆記 15章 7
15.8.控制代碼類與繼承 1 c 中物件導向程式設計的乙個頗具諷刺意味的地方是,不能使用物件支援物件導向程式設計,相反,必須使用指標或引用。2 但是,使用指標或引用會加重類使用者的負擔。3 c 中乙個通用的技術是定義包裝 cover 類或控制代碼類。控制代碼類儲存和管理基類指標。指標所指物件的型別...