以前用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的时候就会出现堆错误