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

C++中虛函數的做用:數組

一、簡單地說,那些被virtual關鍵字修飾的成員函數,就是虛函數。函數

二、實現多態性,多態性是將接口與實現進行分離。3d

三、當基類指針指向一個子類對象,經過這個指針調用子類和基類同名成員函數的時候,基類聲明爲虛函數就會調子類的這個函數,不聲明就會調用基類的。指針

C++中虛函數的用法:對象

一、好比你有個遊戲,遊戲裏有個虛基類叫「怪物」,有純虛函數 「攻擊」。blog

二、派生出了三個子類「狼」「蜘蛛」「蟒蛇」,都實現了本身不一樣的「攻擊」函數,好比狼是咬人,蜘蛛是吐絲,蟒蛇把你纏起來。接口

三、 出現好多怪物的時候就能夠定義一個 虛基類指針數組,把各類怪物的指針給它,而後迭代循環的時候直接 monster[i]->attack() 攻擊玩家就好了,大概見下圖:                                                                            遊戲

擴展資料:內存

 

使用虛函數的注意事項:get

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

二、虛析構函數

(1)析構函數的做用是在對象撤銷以前作必要的「清理現場」的工做。

(2)當派生類的對象從內存中撤銷的時候,會先先調用派生類的析構函數而後再調用基類的析構函數。

(3)當咱們new一個臨時對象時,若基類中包含析構函數,而且定義了一個指向該基類的指針變量。

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

構造函數不能聲明爲虛函數。若是聲明爲虛函數,編譯器會自動報出。

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

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

相關文章
相關標籤/搜索