析构函数

析构函数(也叫析构器),在对象销毁的时候自动调用,一般用于完成对象的清理工作

特点

函数名以~开头,与类同名,无返回值(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;
}