析构函数要求程序终止

时间:2009-12-25 21:48:43

标签: c++ destructor

在main()函数中创建对象时,是否在程序终止时调用析构函数?我会假设,因为main()仍然有一个范围(整个程序),但我只想确保。

2 个答案:

答案 0 :(得分:16)

这取决于程序的终止方式。如果它通过主返回终止(通过显式返回或从结尾掉下来),那么是的,main中的任何自动对象都将被破坏。

但是如果你的程序通过调用exit()终止,那么main实际上不会超出范围,并且不会破坏任何自动对象。

答案 1 :(得分:3)

main()中的声明范围不是整个程序。它的行为就像任何正常的功能一样。所以,是的,本地类对象的析构函数按预期执行。除非程序异常终止。