C++ Primer Plus 第十三章筆記

1.      使用公有派生,基類的公有成員將成爲派生類的共有成員;基類的私有部分也將成爲派生類的一部分,但只能通過基類的公有和保護方法訪問。

2.      派生類構造函數必須使用基類構造函數,意味着基類對象應當在程序進入派生類構造函數之前被創建。如果不調用基類構造函數,程序將使用默認的基類構造函數。

3.      可將派生類對象和地址賦給基類引用和指針,被稱爲向上強制轉換,不需進行顯式類型轉換,其中基類指針或引用只能用於調用基類方法;不可以將基類對象和地址賦給派生類引用和指針,被稱爲向下強制轉換,若不使用顯式類型轉換,則不允許向下強制轉換。引用兼容性屬性使得能夠將基類對象初始化爲派生對象。

4.      公有繼承:建立一種is-a關係,即派生類對象也是一個基類對象,可以對基類對象執行的任何操作也可以對派生類對象執行。

5.      如果沒有使用關鍵字virtual,程序將根據引用類型或指針類型選擇方法;若使用了virtual,程序將根據引用或指針指向的對象的類型來選擇方法。因此,經常在基類中將派生類會重新定義的方法聲明爲虛方法,方法在基類中被聲明爲虛的後,它在派生類中將自動成爲虛方法。

注意:關鍵字virtual只用於類聲明的方法原型中。

6.      編譯器對非虛方法使用靜態聯編,對虛方法使用動態聯編。靜態聯編效率更高。

7.      構造函數不能是虛函數;

析構函數應當是虛函數,除非類不用做基類;

友元不能是虛函數,因爲友元不是類成員,只有成員才能是虛函數。

8.      對於外部世界來說,保護成員的行爲與私有成員相似;但對派生類來說,保護成員的行爲與公有成員相似。

9.      當類聲明中包含純虛函數時,只用作基類,即抽象基類(ABC),不能創建該類的對象。純虛函數聲明的結尾處爲=0,在類中不能定義純虛函數。

注意:ABC描述的是至少使用一個純虛函數的接口。

10.  構造函數、析構函數、賦值運算符不能繼承。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章