我的C++里面析构函数为什么不自动执行

#include <iostream>using namespace std;using namespace std;class myclass{ public: myclass() { cout << "构造函数" << endl; } ~myclass() { cout << "析构函数" << endl; }}; int main(){ myclass mc; return 0;}
这是我的程序
结果如下
析构函数没有出来,很奇怪

而且,我需要加system("pause");来显示小黑框
请问,这些究竟都是什么问题?
谢谢

你是不在集成环境(IDE)里面运行的程序? 如果是,请你到命令中运行这个程序,你就可以看到析构函数其实也被调用了。

请按任意键继续。。。。这个是你调用system("pause"); 的结果? 还是有的IDE比如codeblock,dev-cpp会自动给你添加一个。 自动添加的都是在main()返回或结束前添加的;但析构函数的调用要在main()结束后(或者说是main的最后语句执行完毕后)才调用的。 如果你在IDE用运行程序,其实在『请按任意键继续。。。。』后面还有析构调用的输出,只不过你没有看到。因此要么你在IDE之外的命令行运行这个程序,要么你在析构里面的cout后面添加一句system("pause"); 看看效果如何?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-07
主函数返回后才析构的,所以打印不出来。
你试试将 myclass mc;改成{ myclass mc;}应该就可以了,这样改的目的是限制mc的作用域,提前其析构时机。

至于要加system("pause")才出来,是因为不加的话主函数退出了,程序运行结束,命令行窗口也就销毁了,加上这行代码就需要等待你按一个键后才执行下面的语句return 0;然后返回退出。
相似回答