C 中虛函式的作用

2021-08-14 13:52:25 字數 1011 閱讀 7468

虛函式的作用:通過以下兩個程式來進行解釋!

可以讓成員函式操作一般化,用基類的指標指向不同的派生類的物件時, 

基類指標呼叫其虛成員函式,則會呼叫其真正指向物件的成員函式, 

而不是基類中定義的成員函式(只要派生類改寫了該成員函式)。 

若不是虛函式,則不管基類指標指向的哪個派生類物件,呼叫時都 

會呼叫基類中定義的那個函式。

程式1:

#include

using namecpace std;

class b0 //基類b0宣告

void main() //主函式

執行結果:

b0::display()

b0::display()

b0::display()

程式2:

#include

using namespace std;

class b0 //基類b0宣告

void main() //主函式

執行結果:

b0::display()

b1::display()

d1::display()

虛函式是動態繫結的基礎。

是非靜態的成員函式。

在類的宣告中,在函式原型之前寫virtual。

virtual 只用來說明類宣告中的原型,不能用在函式實現時。

具有繼承性,基類中宣告了虛函式,派生類中無論是否說明,同原型函式都自動為虛函式。

本質:不是過載宣告而是覆蓋。

呼叫方式:通過基類指標或引用,執行時會根據指標指向的物件的類,決定呼叫哪個函式。

到這個地方還沒完,其實完全可以不用父類型別的指標,直接建立子類物件來呼叫子類的普通函式也是可以的啊,為什麼非要使用虛函式呢?

雖然這樣說,但是實際開發過程中不是這樣的,當我們使用一些類庫、框架的時候,這些類庫、框架是事先就寫好的。我們在使用的時候不能直接修改類庫的原始碼,我們只能派生類庫中的類來覆蓋一些成員函式以實現我們的功能,但這些成員函式有的是由框架呼叫的。這種情況下,用虛函式是很好的辦法。

c 中虛函式的作用

參考鏈結 類中普通虛函式作用,實現多型 include includeusing namespace std class a void a print 執行結果如下 實現多型 虛函式總結 在實現多型的時候,不僅要有父類引用子類物件,還要有虛函式,我們只需把基類函式宣告設為virtual,其派生類的相...

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...