关于析构函数

来源:互联网 发布:颈椎牵引器 知乎 编辑:程序博客网 时间:2024/06/05 07:12

学习C++的类时,写了如下的程序

class Student
{
  private:
  int num;
  string name;
  char sex;


  public:
  Student(int n,string nam,char s)     //带有参数的构造函数
  {
    cout<<"Constructor called."<<endl;
    num=n;
    name=nam;
    sex=s;
  }
  ~Student()                           //析构函数
  {
    cout<<"Destructor called."<<num<<endl;
   // system("pause");
  }
  void display()
  {
    cout<<"num:"<<num<<endl;
    cout<<"name:"<<name<<endl;
    cout<<"sex:"<<sex<<endl;
  }
} ;


int main()
{
  Student stud1(1,"Lily",'f');
  stud1.display() ;
  //system("pause");
  return 0;
}


运行结果如下



发现并没有析构函数的输出。



原因以及解决方案:

运行结果中的【请按任意键继续。。。】是由于调用了system("pause").对于C++,析构函数的调用是在main函数最后语句执行完毕后才进行的,所有在【请按任意键继续。。。】后面还有析构函数的输出,只是看不到。

将system("pause")放在析构语句的cout之后可以看到析构函数的输出

原创粉丝点击