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")会影响到析构函数的输出
在控制台的显示呢?希望各位解释一下 谢谢
[解决办法]
因为暂停了 卡在这个语句了
[解决办法]
#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");如下:
#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先执行