读书人

system(quot;pausequot;)影响析构函数调用解决

发布时间: 2012-08-22 09:50:34 作者: rapoo

system("pause")影响析构函数调用
#include <iostream>
#include <cstdlib>
using namespace std;

class Base
{
public:
Base()
{
cout<<"base"<<endl;
}

~Base()
{
cout<<"~base"<<endl;
}
};

int main()
{
Base one;
system("pause");
}
在如下代码中在控制台中的显示仅仅有base而不显示~base 我测试了是否真的没有调用析构函数,在析构函数中向一个
文件进行了输入在关闭控制台后查看文件发现写入了,这是怎么回事?为什么加入system("pause")会影响到析构函数的输出
在控制台的显示呢?希望各位解释一下 谢谢

[解决办法]
因为暂停了 卡在这个语句了
[解决办法]

C/C++ code
#include <iostream>#include <cstdlib>using namespace std;class Base{  public:  Base()  {  cout<<"base"<<endl;  }  ~Base()  {  cout<<"~base"<<endl;  }};void end_pause(){ system("pause");}int main(){ atexit(end_pause);  Base one; }
[解决办法]
没问题。在按任意键后析构了啊。
[解决办法]
system("pause");只是暂停。
[解决办法]
system("pause");暂停 cin.get();等待输入

只是还没有执行到析构函数的时候而已!不信的话你可以调用两次system("pause");如下:
C/C++ code
#include "stdafx.h"#include <string.h>#include <iostream>#include <stdlib.h>#include <windows.h>#include <time.h>using namespace std;class A{public:    ~A(){cout<<"调用析构函数"<<endl;}};int _tmain(int argc, _TCHAR* argv[]){    A *p = new A;    system("pause");    delete p;    system("pause");    return 0;}
[解决办法]
加个大括号,让析构函数比pause先执行

读书人网 >C++

热点推荐