析构函数
析构函数是作用于对象销毁工作,清空对象内部指针指向的堆区内存。析构函数是在释放对象的时候自动调用,栈区对象自动释放。
析构函数语法
- 没有返回值 格式为:“~类名 (){}”
- 函数名称与类名相同但是函数名称前需要添加一个~
- 构造函数不可以有参数,所以不能重载
- 编译器在对象销毁前会自动调用析构函数,不需要手动调用
class A{
public:
int *p;
A(int n){
p = (int*)malloc(N);
cout << "申请了"<<N<<"个字节"<<endl;
}
~A(){
if(p != NULL) free(p);//释放成员变量指向的堆区内存
cout << "析构函数" <<endl;
}
};
int main(){
A a(40);//栈区对象 编译器会自动释放
}