多態(tài)可以分為靜態(tài)多態(tài)和動態(tài)多態(tài)
靜態(tài)多態(tài):函數(shù)重載,泛型編程俊性,編譯器在編譯期間內(nèi)完成的,編譯器根據(jù)函數(shù)實參的類型可推斷出調(diào)用哪個函數(shù)
動態(tài)多態(tài):虛函數(shù)實現(xiàn)并給于類繼承來表現(xiàn)
動態(tài)多態(tài)的機制:
1.子類繼承父類
2.類實現(xiàn)接口
動態(tài)綁定的條件:
1.必須是虛函數(shù)
2.通過基類類型的引用或者指針調(diào)用
總結:
1.派生類重寫基類的虛函數(shù)實現(xiàn)多態(tài)磅废,要求函數(shù)名、參數(shù)列表拯勉、返回值完全相同
2.基類中定義了虛函數(shù),在派生類中該函數(shù)始終保持虛函數(shù)的特性
3.只有類的成員函數(shù)才能定義虛函數(shù)宫峦,靜態(tài)成員函數(shù)不能定義虛函數(shù)
4.如果在類外定義虛函數(shù),只能在聲明函數(shù)時加上virtual關鍵字导绷,定義時不用加
5.構造函數(shù)不能定義為虛函數(shù),
6.不要在構造函數(shù)和析構函數(shù)中調(diào)用虛函數(shù)贾费,在構造函數(shù)和析構函數(shù)中,對象是不完整的褂萧,可能會出現(xiàn)未定義的行為
7.最好將基類的析構函數(shù)聲明為虛函數(shù)葵萎。
8.虛表是所有類對象實例共用的
易混淆的知識點