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函數,則
會報錯,man類是一個抽象的類。