当对象的生存期结束时,系统就会自动执行析构函数清除其数据成员所分配的内存空间。
析构函数的定义格式为:
~类名();//没有返回值,没有参数
注:
(1)析构函数名是由“~”加类名组成的。
(2)析构函数没有参数、没有返回值,不能重载。
(3)一个类有且仅有一个析构函数,必须为public。
(4)在对象的生存期结束时,由系统自动调用析构函数。
(5)如果没有定义析构函数,系统会自动生成一个默认的析构函数,这个析构函数不做任何事情
例:
析构函数的应用:
class Student
{
private:
string name;
int number;
public:
Student(string na, int nu);//构造函数
~Student(); //析构函数
void show();//输出函数
};
Student::Student(string na, int nu)//构造函数定义
{
cout << "构造中..." << endl;
name = na;
number = nu;
}
Student::~Student() //析构函数定义
{
cout << "析构中..." << endl;
}
void Student::show() //输出函数定义
{
cout << "姓名" << ":" << name << endl;
cout << "学号" << ":" << number << endl;
}
int main()
{
Student S1("张三", 230021);
S1.show();
cout << "mian()结束" << endl;
return 0;
}
输出:
总结:系统在对象销毁(生存期结束)时,自动调用析构函数。