c 中虛函式的作用

2021-09-24 23:37:48 字數 1220 閱讀 3771

參考鏈結

類中普通虛函式作用,實現多型

#include#includeusing namespace std;

class a;

void a::print()

執行結果如下:實現多型 

虛函式總結: 

在實現多型的時候,不僅要有父類引用子類物件,還要有虛函式,我們只需把基類函式宣告設為virtual,其派生類的相應函式也會成為虛函式。不需要在基類函式定義和派生類函式宣告前再加關鍵字virtual. 

純虛函式也就是抽象函式,抽象函式所在的類為抽象類,只是乙個特殊的類,為子類提供介面,抽象類無法例項化,只能通過繼承機制,生成抽象類的非抽象派生類,再例項化。

虛析構函式

總的來說虛析構函式是為了避免記憶體洩露,而且是當子類中會有指標成員變數時才會使用得到的。也就說虛析構函式使得在刪除指向子類物件的基類指標時可以呼叫子類的析構函式達到釋放子類中堆記憶體的目的,而防止記憶體洩露的。

從執行結果可以看到,這次執行了父類和子類的析構函式,那麼就不會造成記憶體洩露了。

對比總結

1. 普通虛函式只執行子類實現的函式;

2. 虛析構函式,同時執行子類和父類的析構函式;

為什麼這樣設計?

因為普通虛函式只需要重寫(覆蓋)原有父類的函式實現即可;而虛析構函式,涉及到類成員,而子類是整合了父類的成員的,所以虛析構函式也要被繼承,才能保證成員的釋放;這跟建構函式,子類會呼叫父類建構函式是一樣的。

C 中虛函式的作用

虛函式的作用 通過以下兩個程式來進行解釋!可以讓成員函式操作一般化,用基類的指標指向不同的派生類的物件時,基類指標呼叫其虛成員函式,則會呼叫其真正指向物件的成員函式,而不是基類中定義的成員函式 只要派生類改寫了該成員函式 若不是虛函式,則不管基類指標指向的哪個派生類物件,呼叫時都 會呼叫基類中定義的...

C 中虛析構函式的作用

我們知道,用c 開發的時候,用來做基類的類的析構函式一般都是虛函式。可是,為什麼要這樣做呢?下面用乙個小例子來說明 有下面的兩個類 class clxbase virtual clxbase virtual void dosomething class clxderived public clxba...

C 中虛析構函式的作用

收藏 我們知道,用c 開發的時候,用來做基類的類的析構函式一般都是虛函式。可是,為什麼要這樣做呢?下面用乙個小例子來說明 有下面的兩個類 class clxbase virtual clxbase virtual void dosomething class clxderived public cl...