#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "A()" << endl;
}
~A()
{
cout << "~A()" << endl;
}
};
class B : public A
{
public:
B()
{
cout << "B()" << endl;
}
~B()
{
cout << "~B()" << endl;
}
};
int main()
{
A a;
B b;
system("pause");
return 0;
}
执行结果:
我们明明看到命令行都出现:请按任意键继续。。。的提示了,但析构函数的输出语句还没有执行!
究其原因就是,此时对象a、b还没有被释放,它们只有当执行到return语句时才释放,而现在才执行到system()语句。
所以我们根本没机会看不到析构函数的输出语句被打印!
解决办法就是,将析构函数的输出设备有命令行改为文本文件,这样程序运行结束后,就可以看到析构函数中的输出语句了。
给改写后的代码:
#include <iostream>
#include <fstream>
using namespace std;
fstream fout("destructor.txt", ios::app);
class A
{
public:
A()
{
cout << "A()" << endl;
}
~A()
{
fout << "~A()" << endl;
}
};
class B : public A
{
public:
B()
{
cout << "B()" << endl;
}
~B()
{
fout << "~B()" << endl;
}
};
int main()
{
A a;
B b;
system("pause");
return 0;
}
执行结果:
文本文件中的内容: