虛函數的概念與作用 什么是虛函數?
什么是虛函數?虛擬函數定義:如果在基類中指定了一個函數,而在派生類中有另一個函數定義,編譯器將知道我們不想靜態(tài)連接函數。我們真正需要的是根據調用函數的對象的類型來選擇在程序的特定位置調用哪個函數。功能
什么是虛函數?
虛擬函數定義:如果在基類中指定了一個函數,而在派生類中有另一個函數定義,編譯器將知道我們不想靜態(tài)連接函數。我們真正需要的是根據調用函數的對象的類型來選擇在程序的特定位置調用哪個函數。
功能:用專業(yè)術語解釋虛擬功能的功能就是實現(xiàn)多態(tài)性,多態(tài)性就是將接口和實現(xiàn)分開;用可視化語言解釋虛擬功能的功能就是用常用的方法來實現(xiàn),但由于個體差異,采用不同的策略。
什么是虛函數和純虛函數,有什么區(qū)別?
虛擬函數和純虛擬函數都可以在其子類中重寫。它們之間的區(qū)別在于:(1)純虛函數只有定義,沒有實現(xiàn),虛函數既有定義又有實現(xiàn)代碼。純虛函數一般沒有代碼實現(xiàn)部分,如virtual void print()=0,而一般虛函數必須有代碼實現(xiàn)部分,否則函數將是未定義的。Virtual void print(){printf(“this is Virtual functionn”)}(2)包含純虛函數的類不能定義其對象,而包含虛函數的類可以定義其對象。
虛函數的作用是什么?
C中虛函數的函數:1。為了方便地使用多態(tài)性,我們經常需要在基類中定義虛函數。2在許多情況下,基類本身生成對象是沒有意義的。例如,作為基類,動物可以派生老虎和孔雀等子類,但動物自己生成對象顯然是不合理的。為了解決上述問題,引入了純虛函數的概念,將函數定義為純虛函數(方法:virtualreturntype function()=0)。然后編譯器要求必須在派生類中重寫函數才能實現(xiàn)多態(tài)性。具有純虛函數的類稱為抽象類,它不能生成對象。這是解決上述兩個問題的好辦法。在C中使用虛擬函數:例如,你有一個游戲,其中有一個虛擬基類叫做“怪物”和一個純虛擬函數“攻擊”。然后導出了wolf、spider和Python三個子類。它們都實現(xiàn)了各自不同的“攻擊”功能。比如,狼咬人,蜘蛛吐絲,蟒蛇纏你。當許多怪物出現(xiàn)時,你可以定義一個虛擬基類指針數組,給它們各種怪物的指針,然后在迭代過程中用monster[i]->attack()直接攻擊玩家。請參見下圖:使用虛擬函數的注意事項:首先,包含虛擬函數的類指針列表將增加。2、 虛擬析構函數析構函數的功能是在對象被撤銷之前進行必要的“清理場景”工作。當派生類的對象從內存中取出時,首先調用派生類的析構函數,然后調用基類的析構函數。當我們新建一個臨時對象時,如果基類包含一個析構函數并定義了一個指向基類的指針變量。3、 構造函數不能聲明為虛擬函數。構造函數不能聲明為虛擬函數。如果聲明為虛擬函數,編譯器將自動報告。第四,我們不能在析構函數或構造函數中調用虛函數而不在析構函數或構造函數的過程中進行析構函數或構造函數。即使我們在構造函數或析構函數中調用虛函數,我們也不會向下調用派生類中的函數。