因为源代码中有大量的delete this,会造成很多意想不到的问题,所以我希望把结构改为如下代码,将delete this改为killMe。有大神能帮忙看看下面的代码有什么问题吗?走到killme中的delete me;的时候,它不进析构函数。然后if(0 != m)该判断始终不为0,于是会造成再次调用Do();,导致程序崩溃。谢谢!
#include "stdafx.h"
#include <iostream>
using namespace std;
class Me;
void killMe(Me *me)
{
delete me;
me = 0;
}
class Me
{
public:
Me()
{
i = new int(10);
};
virtual ~Me()
{
delete i;
};
void Do()
{
killMe(this);
};
int *i;
};
int _tmain(int argc, _TCHAR* argv[])
{
Me *m = new Me();
m->Do();
if(0 != m)
{
m->Do();
}
else
{
cout<<"Do skip"<<endl;
}
return 0;
}