C 之虛方法

2021-10-02 13:07:58 字數 854 閱讀 7404

①virtual的作用:告訴編譯器不要靜態繫結virtual指定的函式,並且做好在執行時做好動態繫結的作用。

②虛函式宣告只能出現在類定義中的函式原型宣告;在類外定義

③內聯函式在編譯的時候是鏈結好的,所以virtual函式不可以用內聯函式定義

④虛表:每乙個有虛函式的物件有乙個虛表,虛表中存放著虛函式的入口位址,

當乙個指標指向的物件呼叫時,則該物件在虛表中查詢對應的函式,進行呼叫。

寫virtual虛析構函式,有利於動態申請的資源,容易釋放。

析構函式如果不是用虛函式,會導致記憶體洩漏,比如如下案例

base *b =new derived();

定義乙個基類指向派生類的型別時,如果fun()函式是一般函式,就會採用靜態繫結,此時釋放就會只呼叫基類的析構函式,而不呼叫派生的析構函式。

#include

using namespace std;

class base;}

;class derived:public base

~derived()

};void

fun(base *a)

intmain()

如何解以上問題呢?

在兩個析構函式前加上virtual

#include

using

namespace std;

class

base;}

;class

derived

:public base

virtual

~derived()

};intmain()

C 多型實現之虛方法

控制台應用程式中,新建乙個people類檔案,如下 using system using system.collections.generic using system.linq using system.text namespace 13多型 public string name 1.第一,將父類...

多型之虛方法

1.虛方法用到兩個關鍵字 virtual 和 override 當子類繼承與父類物件時,宣告乙個父類物件,通過在子類中重寫父類物件的方法,可以直接調到子類的方法 public class person set public person string name public virtual void...

C 虛方法 抽象方法

首先在c 中虛方法的定義 public virtual void virtualmethod 只要在方法名前加上virtual,就宣告了該方法為虛方法,注意宣告為虛方法後再不能加上abstract,static關鍵字宣告 以下是插入乙個例項來說明虛方法與非虛方法的不同 public class a ...