析构函数与构造函数功能相反,析构函数不是完成对象的销毁,对象在销毁的时候回自动调用析构函数,完成类的一些资源清理工作。
析构函数是特殊的成员函数,特征为:
1.析构函数名是在类前面加上字符~
2.无参数无返回值
3.一个类有且仅有一个析构函数,若未显示定义,系统会自动生成默认的析构函数
4.对象生命周期结束时,C++编译系统自动生成调用析构函数
举例:
class String
{
public:
String(const char* str = "jack")
{
_str = (char*)malloc(strlen(str) + 1);
strcpy(_str, str);
}
~String()
{
cout << "~String" << endl;
free(_str);
}
private:
char* _str;
};
class Person
{
private:
String _name;
int _age;
};
int main()
{
Person p;
return 0;
}