C++ Primer 5th笔记(chap 15 OOP)概述
面向?qū)ο蟪绦蛟O(shè)計的核心思想:
- 數(shù)據(jù)抽象:將類的接口與實現(xiàn)分類。
- 繼承:可以定義相似的類型并對其相似關(guān)系建模。
- 動態(tài)綁定:我們能用同一段代碼分別處理不同的對象。相同函數(shù),根據(jù)動態(tài)綁定的對象實質(zhì)進(jìn)行區(qū)別。在運(yùn)行時選擇函數(shù)的版本,所以動態(tài)綁定有時又被稱為 運(yùn)行時綁定
1. 繼承Inheritance
通過繼承聯(lián)系在一起的類構(gòu)成一種層次關(guān)系,通常在層次關(guān)系的根部有一個 基類base class,其他類則直接或間接的從基類繼承而來,這些繼承得到的類稱為 派生類derived class。
派生類可以繼承其基類的成員,但是針對特定的操作,派生類可以提供自己新的定義,還可以覆蓋從基類繼承而來的舊定義。
2. 動態(tài)綁定dynamic binding
當(dāng)使用指針或者引用調(diào)用虛函數(shù)時,該調(diào)用將動態(tài)綁定,根據(jù)引用或指針?biāo)壎ǖ膶ο箢愋筒煌?#xff0c;該調(diào)用可能執(zhí)行基類的版本,也可能執(zhí)行某個派生類的版本。
- 靜態(tài)類型:表達(dá)式的靜態(tài)類型在編譯時總是已知的,它是變量聲明時的類型或表達(dá)式生成的類型。
- 動態(tài)類型:變量或表達(dá)式表示的內(nèi)存中的對象類型到運(yùn)行時才可以知道。
- 如果表達(dá)式既不是引用也不是指針,則它的動態(tài)類型永遠(yuǎn)與靜態(tài)一致。
2.1 虛函數(shù)virutal function
基類希望它的派生類各自定義適合自身版本,將這些函數(shù)聲明為虛函數(shù);派生類必須通過派生類列表明確指明他是從那個基類繼承而來的。即 基類希望派生類能進(jìn)行覆蓋的函數(shù)
2.2 在 C++ 語言中,使用基類的引用或者指針調(diào)用一個虛函數(shù)時將發(fā)生動態(tài)綁定。
eg. C++ 11 新標(biāo)準(zhǔn)允許派生類顯示地注明它將使用哪個成員函數(shù)改寫基類的虛函數(shù),具體措施是在函數(shù)的形參列表之后再加一個 override 關(guān)鍵字。
總結(jié)
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 15 OOP)概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha