Monday, February 15, 2021

Virtual vs. Abstract

抽象類別

不能實作。因為設計邏輯上屬於一個未完整的類別。

可以定義抽象方法但不能實作且必須為公開(public)。因為這部份是要開放給子類別複寫的。 

可以繼承抽象類別,但是一樣不能實作抽象方法 

繼承抽象類別的子類必須複寫父類的的抽象方法 


在跑車的類別上增加了openDoor()這個方法,並回傳為側開。但是少數車種開門方法是上掀式的,難道又要將跑車類別改成抽象類別然後再各自實作嗎?這顯然有點因噎廢食,這時候可以使用虛擬 (virtual) 方法。

 虛擬

方法必須實作。

虛擬方法中必須為公開(public)。因為允許子類別複寫。 

子類別可以直接引用或選擇複寫(override)虛擬方法 


Error:invalid new-expression of abstract class type


原因:

对抽象类进行了new操作,或派生类中未完全实现基类中定义的纯虚函数。


解决方法:

一般IDE会检查并提示基类中的哪些纯虚函数未实现,按提示将纯虚函数实现即可。


 

No comments:

Post a Comment

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能