當前位置:編程學習大全網 - 編程語言 - C++中虛函數的作用是什麽?它應該怎麽用呢?

C++中虛函數的作用是什麽?它應該怎麽用呢?

C++中虛函數的作用:

1、為了方便使用多態特性,我們常常需要在基類中定義虛擬函數。

2、在很多情況下,基類本身生成對象是不合情理的。例如,動物作為壹個基類可以派生出老虎、孔雀等子類,但動物本身生成對象明顯不合常理。

為了解決上述問題,引入了純虛函數的概念,將函數定義為純虛函數(方法:virtual ReturnType Function()= 0;),則編譯器要求在派生類中必須予以重寫以實現多態性。

同時含有純虛擬函數的類稱為抽象類,它不能生成對象。這樣就很好地解決了上述兩個問題。

C++中虛函數的用法:

比如妳有個遊戲,遊戲裏有個虛基類叫「怪物」,有純虛函數 「攻擊」。然後派生出了三個子類「狼」「蜘蛛」「蟒蛇」,都實現了自己不同的「攻擊」函數,比如狼是咬人,蜘蛛是吐絲,蟒蛇把妳纏起來。

然後出現好多怪物的時候就可以定義壹個?虛基類指針數組,把各種怪物的指針給它,然後叠代循環的時候直接 monster[i]->attack() 攻擊玩家就行了,大概見下圖:

擴展資料:

使用虛函數的註意事項:

壹、包含虛函數的類指針列表會增大。

二、虛析構函數

析構函數的作用是在對象撤銷之前做必要的“清理現場”的工作。當派生類的對象從內存中撤銷的時候,會先先調用派生類的析構函數然後再調用基類的析構函數。

當我們new壹個臨時對象時,若基類中包含析構函數,並且定義了壹個指向該基類的指針變量。

三、構造函數不能聲明為虛函數

構造函數不能聲明為虛函數。如果聲明為虛函數,編譯器會自動報出。

四、不在析構或者構造過程中調用虛函數

在析構函數或者是構造函數中,我們絕對不能調用虛函數。即使,我們在構造函數或者析構函數中調用虛函數,也不會下降至派生類中調用函數。

  • 上一篇:什麽是oled
  • 下一篇:計算機遊戲程序設計的目錄
  • copyright 2024編程學習大全網