天天看點

學習筆記---C++虛函數,純虛函數

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類是一個抽象的類。