C 中virtual 虛函式的作用介紹

2021-09-27 03:07:27 字數 1083 閱讀 2492

虛函式是定義在基類中的函式,子類必須對其進覆蓋。在類中宣告虛函式的格式: virtual void display();

(1)定義子類物件,並呼叫物件中未被子類覆蓋的基類函式a。同時在該函式a中,又呼叫了子類覆蓋的基類函式b。此刻將會呼叫基類中的函式b, 而我們原本是想呼叫是子類中的覆蓋函式b。 而使用虛函式就可以解決這個問題。 

舉個例: 

#includeusing namespace std;

class father

void fathershowdisplay()

class son:public father

}int main()

通過基類中未被覆蓋的函式,來呼叫子類中被覆蓋的display函式。

輸出的結果是 father.display() 。

修改方法: 將display() 變成虛函式。

#includeusing namespace std;

class father //基類 father

//在函式中呼叫了,子類覆蓋基類的函式display()

void fathershowdisplay()

};class son:public father //子類son

};int main()

輸出結果:son::display() 。

(2)在使用指向子類物件的基類指標,並呼叫子類中的覆蓋函式時,如果該函式不是虛函式,那麼將呼叫基類中的該函式;如果該函式是虛函式,則會呼叫子類中的該函式。

**:

#includeusing namespace std;

class father

};class son::father

};main()

定義乙個基類指標, 讓它指向子類覆蓋的函式,如果該函式沒有使用virtual,輸出的結果就是 father.dispaly

virtual虛函式的作用

include include using namespace std class person person void print class student public person student void print void show person per1 int main perso...

C 中的虛函式 virtual

在下面的程式中類derived繼承了類base class base class derived public base intmain void 第二行沒有動態繫結,呼叫函式f 這個是派生類版本的,直接輸出derived,什麼型別就是什麼型別。第三行進行了動態繫結,但是只有在呼叫虛函式的時候,動態...

C 中的虛函式virtual

在某基類中宣告 virtual 並在乙個或多個派生類中被重新定義的成員函式稱為虛函式。虛函式的作用就是實現多型性 polymorphism 多型性是將介面與實現進行分離。c 作為完全物件導向語言,所有函式並不預設為virtual,但可以在基類中宣告關鍵字virtual,就可以在其派生類中通過關鍵字o...