类指针类型如果为空, delete 释放空间,则不会执行析构函数。
系统根据指针类型进行相应操作,void是空类型,无法从中寻找析构函数,因此不会调用析构函数。
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "构造函数" << endl;
}
~A()
{
cout << "执行析构" << endl;
}
};
int main()
{
void *a = new A; //void* 类型
delete a;
}
运行结果
正确的类型运行结果:(A* a)