1 .虛函數
假設people是man的父類,people類和man類都定義了實函數walk()
people* p = new man();
p->walk();
這裡P執行的是people類的walk()函數。這和java語言不一樣,java在這裡執行的是man的walk()函數。那麼C++如何實現子類的方法重寫,並動態定位到子類方法?
這裡必須使用virtual關鍵字 定義父類和子類的walk()
virtual void walk();
現在執行 p->walk();就是執行的子類的walk()。
2.純虛函數
virtual void walk()=0;這裡就定義了一個純虛函數,可以在父類中不實現它,而在子類中去實現它。
如果在man類也沒有實現walk函數,則
people* p = new man();
會報錯,man類是一個抽象的類。