C++析构函数_析构函数

格式:~类名(void){  } 

没有参数,没有返回值,不能被重载,一个类只能有一个析构函数

对象销毁时自动执行

主要负责清理对象生命周期中的动态资源

#include <iostream>
using namespace std;

class A {
public:
A(int i = 0) {
m_pi = new int(i);
}
void print(void)const {
cout << *m_pi << endl;
}
~A(void) { //析构函数--对象销毁时自动调用
cout << "析构函数" << endl;
delete m_pi;
}
private:
int* m_pi;
};

int main()
{
if (1) {
A a(132);
a.print();
cout << "11111" << endl;
} //此时a对象销毁,调用了析构函数
cout << "22222" << endl;

A* b = new A(2000);
b->print();
delete b; //此时b对象销毁,调用了析构函数
cout << "333333" << endl;

return 0;
}

如果类中没有析构函数,那么编译器会提供一个析构函数

对于基本类型的成员变量,什么也不做

对于类类型的成员,将会自动调用相应类的析构函数


对象的创建和销毁顺序:

创建顺序:分配内存-->构造成员子对象-->执行构造函数

销毁顺序:执行析构函数-->析构成员子对象-->释放内存

析构函数用来销毁类中的动态资源,不能销毁对象自身