2021年1月30日 星期六

virtual function

virtual function

在程式執行的時候才決定呼叫哪個function。

與一般的繼承class的function overload不同,如果一個function是virtual的,那麼在執行的時候會去判斷物件屬於哪個class,然後呼叫該class定義的function。

如果base class裡宣告某function為virtual,那麼繼承的class的某function也為virtual,無需特別宣告。


Pure Virtual Functions

有時候base class可能還無法實作某些function,但又需要先把功能定義清楚,該怎麼辦呢?

這時候就用到純虛擬函式,它是沒有函式實體的。例:

virtual void Area()=0;

而所有繼承自base class的class都需要自己定義Area的內容。


如果一個class存在pure virtual function,那麼該class就是抽象類別,它不能於主程式中被宣告、使用。

也因此繼承它的class要自己override 這些 pure virtual function,不然也會被視為抽象類別,也一樣法把被使用。

沒有留言:

張貼留言