C++中虛函數的做用:數組
一、簡單地說,那些被virtual關鍵字修飾的成員函數,就是虛函數。函數
二、實現多態性,多態性是將接口與實現進行分離。3d
三、當基類指針指向一個子類對象,經過這個指針調用子類和基類同名成員函數的時候,基類聲明爲虛函數就會調子類的這個函數,不聲明就會調用基類的。指針
C++中虛函數的用法:對象
一、好比你有個遊戲,遊戲裏有個虛基類叫「怪物」,有純虛函數 「攻擊」。blog
二、派生出了三個子類「狼」「蜘蛛」「蟒蛇」,都實現了本身不一樣的「攻擊」函數,好比狼是咬人,蜘蛛是吐絲,蟒蛇把你纏起來。接口
三、 出現好多怪物的時候就能夠定義一個 虛基類指針數組,把各類怪物的指針給它,而後迭代循環的時候直接 monster[i]->attack() 攻擊玩家就好了,大概見下圖: 遊戲
擴展資料:內存
使用虛函數的注意事項:get
一、包含虛函數的類指針列表會增大。
二、虛析構函數
(1)析構函數的做用是在對象撤銷以前作必要的「清理現場」的工做。
(2)當派生類的對象從內存中撤銷的時候,會先先調用派生類的析構函數而後再調用基類的析構函數。
(3)當咱們new一個臨時對象時,若基類中包含析構函數,而且定義了一個指向該基類的指針變量。
三、構造函數不能聲明爲虛函數
構造函數不能聲明爲虛函數。若是聲明爲虛函數,編譯器會自動報出。
四、不在析構或者構造過程當中調用虛函數
在析構函數或者是構造函數中,咱們絕對不能調用虛函數。即便,咱們在構造函數或者析構函數中調用虛函數,也不會降低至派生類中調用函數。