以前用VS 6和VS2003,類向導生成的都是虛析構函數,但是到了VS2005,默認就不是虛析構函數了。
這會帶來什么問題?我今天就遇到了一次。當我用VS2005類向導生成一個類,如
class BaseClass
{
public:
????BaseClass(){};
???~BaseClass(){};
???virtual void VFun() = 0;
}
然后,再生成一個類繼承于他
class ProblemClass : public?BaseClass
{
public:
????ProblemClass (){};
???~ProblemClass (){};
???virtual void VFun(){};
}
然后,執行以下代碼:
BaseClass *pClass = new ProblemClass ;
delete pClass ;
如無以外,在delete的時候就會出現堆錯誤