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,不然也會被視為抽象類別,也一樣法把被使用。
沒有留言:
張貼留言