虛函數(shù)可以在函數(shù)說(shuō)明時(shí)定義 虛函數(shù)的定義?
虛函數(shù)的定義?1. 虛函數(shù)的概念虛函數(shù)是用virtual關(guān)鍵字聲明的基類(lèi)函數(shù)。如果一個(gè)函數(shù)在基類(lèi)中被指定為virtual,并且在派生類(lèi)中有該函數(shù)的另一個(gè)定義,編譯器將知道我們不希望靜態(tài)連接該函數(shù)。我們
虛函數(shù)的定義?
1. 虛函數(shù)的概念
虛函數(shù)是用virtual關(guān)鍵字聲明的基類(lèi)函數(shù)。如果一個(gè)函數(shù)在基類(lèi)中被指定為virtual,并且在派生類(lèi)中有該函數(shù)的另一個(gè)定義,編譯器將知道我們不希望靜態(tài)連接該函數(shù)。我們真正需要的是根據(jù)調(diào)用函數(shù)的對(duì)象的類(lèi)型來(lái)選擇在程序的特定位置調(diào)用哪個(gè)函數(shù)。
2. Define
語(yǔ)法:virtual function return type function name(parameter table){function body}
虛擬函數(shù)必須是基類(lèi)的非靜態(tài)成員函數(shù),其訪(fǎng)問(wèn)權(quán)限可以是private、protected或public。虛擬函數(shù)的一般形式在基類(lèi)的類(lèi)定義中定義:
類(lèi)基類(lèi)名稱(chēng){
…
虛擬返回值類(lèi)型要在派生類(lèi)中重載的函數(shù)名稱(chēng)(參數(shù)列表);
};
哪些函數(shù)能被聲明為虛函數(shù)?為什么?
非靜態(tài)成員函數(shù)可以聲明為虛擬函數(shù)。
因?yàn)樗菍?duì)象的一部分
為什么要用虛函數(shù)?
當(dāng)基類(lèi)的指針指向不同派生類(lèi)的對(duì)象時(shí),如果基類(lèi)的指針調(diào)用其虛擬成員函數(shù),它將調(diào)用實(shí)際指向?qū)ο蟮某蓡T函數(shù),而不是基類(lèi)中定義的成員函數(shù)(只要派生類(lèi)重寫(xiě)成員函數(shù))。如果它不是虛函數(shù),則無(wú)論基類(lèi)指針指向哪個(gè)派生類(lèi)對(duì)象,都將調(diào)用在基類(lèi)中定義的函數(shù)。