析构函数
析构函数(也叫析构器),在对象销毁的时候自动调用,一般用于完成对象的清理工作
特点
函数名以~开头,与类同名,无返回值(void都不能写),无参,不可以重载,有且只有一个析构函数
class Person {
int m_age;
public:
// 对象创建完毕的时候调用
Person() {
cout << "Person()" << endl;
this->m_age = 0;
}
Person(int age) {
cout << "Person(int age)" << endl;
this->m_age = age;
}
// 析构函数
// 对象销毁(内存被回收)的时候调用
~Person() {
cout << "~Person()" << endl;
}
};
注意
通过malloc分配的对象free的时候不会调用构造函数 构造函数、析构函数要声明为public,才能被外界正常使用
析构函数的调用
int main() {
Person person;
{// 会调用析构函数
Person person;
}
// 会调用析构函数
Person *p1 = new Person();
delete p1;
// 不会调用析构函数
Person *p2 = (Person *) malloc(sizeof(Person));
free(p2);
getchar();
return 0;
}