析构函数和构造函数是一对,就像C语言中的malloc和free,C++中的new和delete一样
先从一个实例说起:
#include <iostream>
#include <string>
using namespace std;
class Student
{
public:
Student(int n, string nam, char s)
{
num = n;
name = nam;
sex = s;
cout<<"执行构造函数: "<<name<<" come."<<endl;
}
~Student()
{
cout<<"执行析构函数: "<<"Bye bye, "<<name<<endl;
}
void display();
private:
int num;
string name;
char sex;
};
void Student::display()
{
cout<<num<<" "<<name<<" "<<sex<<endl;
}
int main()
{
Student stud1(10010, "wang_li", 'f');
stud1.display();
Student stud2(10011, "zhang_fun", 'm');
stud2.display();
return 0;
}
执行结果:
通过程序的执行结果可以看出程序的执行过程为:
执行第一个对象的构造----打印第一个对象的信息---执行第二个对象的构造函数-------打印第二个对象的信息—执行第二个对象的析构函数——执行第一个对象的析构函数——程序结束
通过程序的执行结果发现先初始化的对象后执行该对象的析构函数,后初始化的对象先执行析构函数