一---封裝
萬事萬物皆對象。
封裝的意義:
将屬性和行為作為一個整體。
可以把屬性和行為放在不同的權限下進行管理。
public 類内,類外均可通路
protected 類内可以,類外不可以
private 類内可以,類外不可以
保護和私有的差別在于繼承的時候兒子可以使用父親的保護内容。
成員屬性設定為私有優點
1)可以自己控制讀寫權限
2)對于寫權限,我們可以檢測資料的有效性(比如年齡在0-100歲之間)
二---繼承
可以減少重複的代碼
父類中所有的屬性都會被繼承下來,父類中的私有屬性被編譯器隐藏了,但資料确實繼承下來了。
三---多态
多态的分類
1)靜态多态:運算符重載,函數重載,複用函數名
2)動态多态:派生類和虛函數實作運作多态
靜态和動态的差別:靜态多态的函數位址早綁定-編譯階段确定函數位址,動态多态的函數位址晚綁定-運作階段确定函數位址。
動态多态的要求:
1)要有繼承關系
2)子類要重寫父類的虛函數
動态多态的使用 :
父類的指針或者引用來指向子類對象
要想實作動态多态 ,父類中的函數必須為虛函數,這樣就可以位址晚綁定。
多态的原理剖析:
如果不加virtual的話占1個位元組,加了virtual之後占4個位元組,說明virtual的底層是個指針。
vfptr(虛函數(表)指針)
v--virtual
f--function
ptr-pointer