比如说你定义了一个类A,有一个成员对象是char * arrayMember;他是一个指针,然后你定义一个A的对象 A a;使用它的arrayMember去new一块内存进行应用,然后在你收回a的内存的时候,如果不使用析构函数,你只会收回arrayMember所占的4字节内存空间,而它所指向的那段new出来的那块内存就不会被回收,析构函数所谓的清理就是帮助回收类似这样和a对象有依赖关系的内存空间,或者其他因为a的消失会跑飞的一些资源。
对象内存的回收只是意味着这个对象的成员函数成员变量以及其他这个对象所占有的内存的删除回收;而它所管理或者有依赖关系的一些资源的回收需要在析构函数里面进行,否则对象没了,就寻找不到他们了,他们就会成为默默存在却永远不会被使用的资源。
#include<iostream>
using namespace std;
class a{
public:
a();
shuchu();
~a();
};
a::a(){cout<<"构造函数执行啦"<<endl;};
a::~a(){cout<<"析构函数执行啦"<<endl;};
a::shuchu(){cout<<5555<<endl;}
int main(){
a n;
n.shuchu();
return 0;
}