15.8. 控制代碼類與繼承
1、c++ 中物件導向程式設計的乙個頗具諷刺意味的地方是,不能使用物件支援物件導向程式設計,相反,必須使用指標或引用。
2、但是,使用指標或引用會加重類使用者的負擔。
3、c++ 中乙個通用的技術是定義包裝(cover)類或控制代碼類。控制代碼類儲存和管理基類指標。指標所指物件的型別可以變化,它既可以指向基類型別物件又可以指向派生型別物件。使用者通過控制代碼類訪問繼承層次的操作。因為控制代碼類使用指標執行操作,虛成員的行為將在執行時根據控制代碼實際繫結的物件的型別而變化。因此,控制代碼的使用者可以獲得動態行為但無須操心指標的管理。
4、包裝了繼承層次的控制代碼有兩個重要的設計考慮因素:
a):像對任何儲存指標(第 13.5 節)的類一樣,必須確定對複製控制做些什麼。包裝了繼承層次的控制代碼通常表現得像乙個智慧型指標(第 13.5.1 節)或者像乙個值(第 13.5.2 節)。
b):控制代碼類決定控制代碼介面遮蔽還是不遮蔽繼承層次,如果不遮蔽繼承層次,使用者必須了解和使用基本層次中的物件。
c primer閱讀筆記 15章 1
1 物件導向程式設計基於三個基本概念 資料抽象 繼承和動態繫結。在 c 中,用類進行資料抽象,用類派生從乙個類繼承另乙個 派生類繼承基類的成員。動態繫結使編譯器能夠在執行時決定是使用基類中定義的函式還是派生類中定義的函式。15.1.物件導向程式設計 概述 1 物件導向程式設計的關鍵思想是多型性 po...
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 物件 引用或指標...