在编辑储存文件的时候突然发现一个bug,
为什么我在析构函数里编辑了存储程序却无法储存?
仔细看了一下代码发现正常运行到exit(0)后就结束了,
难道exit(0)后,直接退出程序,就不执行析构函数了吗?
对此我写了简单的代码测试了一下,结果是exit(0);后析构函数不在被执行!
#include <iostream>
using namespace std;
#include <fstream>
class fun
{
public:
fun();
~fun();
int m_rate;
};
fun::fun()
{
m_rate = 0;
fstream f;
f.open("storge.text", ios::in);
f >> m_rate;
f.close();
}
fun::~fun()
{
fstream f;
f.open("storge.text", ios::out);
f << m_rate;
f.close();
}
int main()
{
fun a;
cout << a.m_rate << endl;
cin >> a.m_rate;
exit(0); //如果不exit(0),数据正常保存到文件里。
//exit(0)后析构函数不再被执行,数据不会被保存
return 0;
}