如果发现自己的析构函数没有被调用,有可能是因为在delete的那个地方,没有#include相应的头文件,而只是用了class的前置声明。如下:
class AAA;
//这里只有前置声明AAA,并没有include它的头文件
void doRelease(AAA* ptr)
{
delete ptr;//这里是不会执行析构函数的
}
如果发现自己的析构函数没有被调用,有可能是因为在delete的那个地方,没有#include相应的头文件,而只是用了class的前置声明。如下:
class AAA;
//这里只有前置声明AAA,并没有include它的头文件
void doRelease(AAA* ptr)
{
delete ptr;//这里是不会执行析构函数的
}
转载于:https://my.oschina.net/superpdm/blog/531001