C 虛函式簡單總結

2021-08-07 07:47:16 字數 1207 閱讀 4099

2016-07-07 14:39

187人閱讀收藏 

舉報

c++(59)

在類的繼承層次結構中,在不同層次中可以出現名字相同、引數個數和型別都相同的函式。

簡單地說,被virtual關鍵字修飾的成員函式,就是虛函式。

格式:virtual 函式返回值型別 函式名 (引數列表);

舉例

[cpp]view plain

copy

print?

class

base  

virtual

void

display()    

// 虛函式

private

:  int

data;  

};  

使用:1、在基類用virtual宣告成員函式為虛函式。這樣在派生類中重新定義此函式,為它賦予新的功能,並能方便地被呼叫。在類外定義虛函式時,不必再加virtual。

2、在派生類中重新定義此函式,要求函式名、函式型別、函式引數(個數和型別)必須與基類的虛函式相同,並根據派生類的需要重新定義函式體。c++規定,當乙個成員函式被宣告為虛函式後,其派生類中的同名函式都自動成為虛函式。因此在派生類重新宣告該虛函式時,可以加 virtual,也可不加,但習慣上一般每一層宣告該函式時加virtual是程式更加清晰。如果在派生類中沒有對基類的虛函式重新定義,則派生類簡單地繼承基類的虛函式。

3、定義乙個指向基類物件的指標, 並使它指向同一類族中需要呼叫該函式的物件。

4、通過該指標變數呼叫虛函式,此時呼叫的就是指標指向的物件的同名函式。

舉例

[cpp]view plain

copy

print?

class

base  

virtual

void

display()  

private

:  int

data;  

};  

class

derived: 

public

base  

private

:  int

pd;  

};  

intmain()    

c 虛函式,虛表相關總結

物件導向,從單一的類開始說起。class a 這個類中有兩個成員變數,都是int型別,所以這個類在記憶體中占用多大的記憶體空間呢?sizeof a 8個位元組,乙個int占用四個位元組。下圖驗證 這兩個資料在記憶體中是怎樣排列的呢?原來是這樣,我們根據debug出來的位址畫出a物件在記憶體的結構圖 ...

C 虛函式的總結

在基類中加入virtual關鍵字的函式就是虛函式,在基類的派生類中就可以通過重寫虛函式來實現對基類虛函式的覆蓋。當基類的指標指向派生類的物件時,對指標虛函式的呼叫實際上是呼叫了派生類的虛函式。這是物件導向中多型性的體現。例子 class a 這個例子是虛函式的乙個典型應用。虛函式的虛是在所謂的 動態...

C 的虛函式簡單介紹

c 中的虛函式的作用主要是實現了多型的機制。關於多型,簡而言之就是用父型別別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式 每個類都維護著一張虛函式表,呼叫虛函式時檢視物件是那個類,然後查表 基類可以使用為純虛函式 virtual void print 0 基類就是抽象類,要求子類...