C 虛函式和虛析構函式的使用

2021-09-26 16:40:40 字數 1238 閱讀 2719

//

// main.cpp

// c++test12

//#include using namespace std;

class a

// ~a()

virtual ~a()

void funa();

// void funb();

virtual void funb();

};void a::funa()

void a::funb()

class b: public a

~b()

void funa();

virtual void funb();

};void b::funa()

void b::funb()

int main(int argc, const char * ar**)

//class a void funb();

//a::a()

//b::b()

//a::a()

//b::b()

//a::funa()

//a::funb() // 未加虛,指向派生類物件基類指標呼叫基類的函式

//b::funa()

//b::funb()

//b::~b()

//a::~a()

//b::~b()

//a::~a()

//class a virtual void funb();

//a::a()

//b::b()

//a::a()

//b::b()

//a::funa()

//b::funb() // 加虛,指向派生類物件的基類指標呼叫派生類的函式

//b::funa()

//b::funb()

//a::~a()

//b::~b()

//a::~a()

//virtual ~a() // 加上虛函式保證析構完全,物件完全釋放

//a::a()

//b::b()

//a::a()

//b::b()

//a::funa()

//b::funb()

//b::funa()

//b::funb()

//b::~b()

//a::~a()

//b::~b()

//a::~a()

C 虛函式,純虛函式,虛析構和純虛析構

c 虛函式 定義為虛函式是為了允許用基類的指標來呼叫子類的這個函式,是需要具體實現的 virtual void funtion1 c 純虛函式 一 定義 純虛函式是在基類中宣告的虛函式,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中實現純虛函式的方法是在函式原型後加 0 vir...

C 虛析構函式和純虛析構函式

我們知道析構函式是在物件生命週期結束時自動被呼叫,用來做一些清理工作 如釋放控制代碼,釋放堆記憶體等 防止出現記憶體洩漏。那怎麼還有虛析構函式呢?使用虛析構函式的類一般是要作為基類,被其他類繼承。通過把基類的析構函式宣告為虛函式,就可以通過父類指標來釋放子類物件,從而完成子類的一些清理工作,防止出現...

c 的虛析構函式和純虛析構函式

虛函式是用作實現子類的多型性的,它可以在執行的過程中選擇子類或者父類的同名函式,意思就是說,每次只有乙個函式執行。但是對於析構函式來說,子類 與父類在銷毀物件時,都應該要呼叫 所以把父類的析構函式定義為虛函式,會發生什麼事情呢。class class b public a int main 可以發現...