首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

system("pause")影响析构函数调用解决方法

2012-08-22 
system(pause)影响析构函数调用#include iostream#include cstdlibusing namespace stdclass Base{

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先执行

热点排行