下面的**舉例:
// virtual.cpp : 定義控制台應用程式的入口點。
//
#include "stdafx.h"
#include
#define maxlen 128
class cemployee
~cemployee()
protected:
private:
};class coperator:public cemployee
~coperator()
};int _tmain(int argc, _tchar* argv)
函式的返回結果是:
可以看到值呼叫了父類的析構函式,而子類的析構函式沒有被呼叫,那麼可想而知,如果在子類的建構函式中對某個成員函式在堆空間中分配了空間,而之類沒有被呼叫,是不是會造成記憶體洩漏呢?答案是肯定的,那有什麼辦法可以解決這種情況下出現的記憶體洩漏呢?那就是把父類的析構函式寫為虛函式,看下面的**:
// virtual.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include
#define maxlen 128
class cemployee
virtual ~cemployee()
protected:
private:
};class coperator:public cemployee
~coperator()
};int _tmain(int argc, _tchar* argv)
執行結果:
因此,在寫父類的時候,最好將其析構函式寫為虛函式。這樣可以防止比較癮避的記憶體洩漏。
為什麼基類的析構函式要寫成虛函式?
答 在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。說明如下 第一段 includeusing namespace std class clxbase clxbase void dosomething class clxderived public clxbase ...
為什麼基類的析構函式是虛函式
1.為什麼基類的析構函式是虛函式?在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。下面 網路 源位址 a.第一段 includeusing namespace std class clxbase clxbase void dosomething class clxd...
為什麼基類的析構函式是虛函式
1.為什麼基類的析構函式是虛函式?在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。下面 網路 源位址 a.第一段 includeusing namespace std class clxbase clxbase void dosomething class clxd...