理解多態 多種多樣的形態(靜態多態,動態多態) 靜態多態(編譯時期) 1:函數重載 bool comparet(int ,int); bool compare(double,double); compare(100,100)->compare_int_int(); compare(1.0,2.0)- ...
理解多態
多種多樣的形態(靜態多態,動態多態)
靜態多態(編譯時期)
1:函數重載
bool comparet(int ,int); bool compare(double,double);
compare(100,100)->compare_int_int();
compare(1.0,2.0)->comapre_double_double();
2:模板
template<typename T>
bool compare(T a,T b){
return a>b;
}
compare<int>(20,10); =>int 實例化compare(int x, int y); 發生在編譯時期
compare<double>(100.0,50.0); 實例化compare(double x,double y);發生在編譯器
動態多態(運行時期)
在繼承結構中,基類指針(引用),指向派生類對象,通過該指針(引用)調用同名覆蓋方法(虛函數)
基類指針指向哪個派生類對象,就會調用哪個派生類對象的同名覆蓋方法,稱為多態
pBase->show()多態底層是通過動態綁定來實現的 pbase->訪問誰的vfptf->繼續訪問vftable->拿到最終的虛函數地址->完成調用
繼承的好處?
1:可以做代碼的復用
2:在基類中提供統一的虛函數介面,讓派生類進行重寫,然後就可以使用多態.