回覆列表
  • 1 # 使用者364651256228734

    C++中虛擬函式的作用:1、為了方便使用多型特性,我們常常需要在基類中定義虛擬函式。2、在很多情況下,基類本身生成物件是不合情理的。例如,動物作為一個基類可以派生出老虎、孔雀等子類,但動物本身生成物件明顯不合常理。為了解決上述問題,引入了純虛擬函式的概念,將函式定義為純虛擬函式(方法:virtual ReturnType Function()= 0;),則編譯器要求在派生類中必須予以重寫以實現多型性。同時含有純虛擬函式的類稱為抽象類,它不能生成物件。這樣就很好地解決了上述兩個問題。C++中虛擬函式的用法:比如你有個遊戲,遊戲裡有個虛基類叫「怪物」,有純虛擬函式 「攻擊」。然後派生出了三個子類「狼」「蜘蛛」「蟒蛇」,都實現了自己不同的「攻擊」函式,比如狼是咬人,蜘蛛是吐絲,蟒蛇把你纏起來。然後出現好多怪物的時候就可以定義一個 虛基類指標陣列,把各種怪物的指標給它,然後迭代迴圈的時候直接 monster[i]->attack() 攻擊玩家就行了,大概見下圖:使用虛擬函式的注意事項:一、包含虛擬函式的類指標列表會增大。二、虛解構函式解構函式的作用是在物件撤銷之前做必要的“清理現場”的工作。當派生類的物件從記憶體中撤銷的時候,會先先呼叫派生類的解構函式然後再呼叫基類的解構函式。當我們new一個臨時物件時,若基類中包含解構函式,並且定義了一個指向該基類的指標變數。三、建構函式不能宣告為虛擬函式建構函式不能宣告為虛擬函式。如果宣告為虛擬函式,編譯器會自動報出。四、不在析構或者構造過程中呼叫虛擬函式在解構函式或者是建構函式中,我們絕對不能呼叫虛擬函式。即使,我們在建構函式或者解構函式中呼叫虛擬函式,也不會下降至派生類中呼叫函式。

  • 2 # 使用者1948488031778

    含義是讓一個函式具有不同的行為。

    舉例來說,人這個類有個函式叫工作!醫生和交警分別繼承自人,都具有了工作這個函式,當然醫生的工作內容是治病,交警的工作內容是指揮交通。

    現在你需要將交警和醫生同等對待,歸類為人,並分別呼叫其工作函式去執行工作。

    如果工作這個函式不是虛擬函式,那你呼叫的就是人的工作函式,無任何意義!相反,如果是虛擬函式,那交警就會去指揮交通,醫生會去治病!

  • 中秋節和大豐收的關聯?
  • 班子成員的表現及特點?