C++ 析构函数不执行原因

如果发现自己的析构函数没有被调用,有可能是因为在delete的那个地方,没有#include相应的头文件,而只是用了class的前置声明。如下:

class AAA;
//这里只有前置声明AAA,并没有include它的头文件
void doRelease(AAA* ptr)
{
    delete ptr;//这里是不会执行析构函数的
}

这种情况恶心 就恶心在,编译器是不会报错的

感觉被C++按在地上摩擦。。。

转自:https://my.oschina.net/superpdm/blog/531001