虛函式是定義在基類中的函式,子類必須對其進覆蓋。在類中宣告虛函式的格式: 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...