物聯網/嵌入式工程師
重磅升級:新增硬件電路設計與實戰,讓你軟硬通吃,同級PK無敵!行業風口、政策傾斜,新晉熱門高薪不內卷!0基礎一站式就業完整路徑,搶占先發優勢!
上一小節,我們介紹了父類和子類的轉換,也簡單介紹了多態,從這節開始,我們詳細介紹多態。
class Base { public: void func(){ printf("this is Base\n"); } } class Child : public Base { public: void func(){ printf("this is Child\n"); } }
int main(int argc,char **argv) { Child * obj = new Child(); Base * baseobj = (Base *)obj; baseobj->func(); delete obj; return 0; }
我們之前講述了什么是多態,還用了一個例子,將一個指針的類型做成強轉,然后調用 func 函數,就會發現, func 函數會隨著被強轉的類型的變換而變換,這種函數的關聯過程稱為編聯。按照聯編所進行的階段不同,可分為兩種不同的聯編方法:靜態聯編和動態聯編。
Child * obj = new Child();
Base * baseobj = (Base *)obj;
baseobj->func();
delete obj;
return 0;
再來看看這個例子,我們通過強制轉換來指定 func 執行的是哪個。這個過程是在編譯階段就將函數實現和函數調用關聯起來,因此靜態聯編也叫早綁定,在編譯階段就必須了解所有的函數或模塊執行所需要檢測的信息。
除了靜態編聯之外,C++ 還支持動態編聯。動態聯編是指聯編在程序運行時動態地進行,根據當時的情況來確定調用哪個同名函數,實際上是在運行時虛函數的實現。當然,我們現在所學的知識還沒辦法完成動態編聯,接下來,我們將要學習虛函數,來實現動態編聯。
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報