析构函数

析构函数和构造函数是一对,就像C语言中的malloc和free,C++中的new和delete一样

先从一个实例说起:

[cpp]

  1. #include <iostream>  
  2. #include <string>  
  3.   
  4. using namespace std;  
  5.   
  6. class Student  
  7. {  
  8. public:  
  9.     Student(int n, string nam, char s)  
  10.     {  
  11.         num = n;  
  12.         name = nam;  
  13.         sex = s;  
  14.   
  15.         cout<<“执行构造函数: “<<name<<” come.”<<endl;  
  16.     }  
  17.   
  18.     ~Student()  
  19.     {  
  20.         cout<<“执行析构函数: “<<“Bye bye, “<<name<<endl;  
  21.     }  
  22.   
  23.     void display();  
  24.   
  25. private:  
  26.     int num;  
  27.     string name;  
  28.     char sex;  
  29. };  
  30.   
  31.   
  32. void Student::display()  
  33. {  
  34.     cout<<num<<” “<<name<<” “<<sex<<endl;  
  35. }  
  36.   
  37. int main()  
  38. {  
  39.     Student stud1(10010, “wang_li”‘f’);  
  40.     stud1.display();  
  41.   
  42.     Student stud2(10011, “zhang_fun”‘m’);  
  43.     stud2.display();  
  44.   
  45.     return 0;  
  46. }  

执行结果:

通过程序的执行结果可以看出程序的执行过程为:
执行第一个对象的构造—-打印第一个对象的信息—执行第二个对象的构造函数——-打印第二个对象的信息—执行第二个对象的析构函数——执行第一个对象的析构函数——程序结束

 

通过程序的执行结果发现先初始化的对象后执行该对象的析构函数,后初始化的对象先执行析构函数

标签