【发布时间】:2009-12-25 21:48:42
【问题描述】:
在 main() 函数中创建对象时,是否会在程序终止时调用其析构函数?我会假设是因为 main() 仍然有一个范围(整个程序),但我只是想确定一下。
【问题讨论】:
标签: c++ destructor
在 main() 函数中创建对象时,是否会在程序终止时调用其析构函数?我会假设是因为 main() 仍然有一个范围(整个程序),但我只是想确定一下。
【问题讨论】:
标签: c++ destructor
这取决于您的程序如何终止。如果它通过 main 返回而终止(通过显式返回或从末尾下降),那么是的,main 中的任何自动对象都将被破坏。
但是如果你的程序通过调用 exit() 终止,那么 main 实际上并没有超出范围,任何自动对象都不会被破坏。
【讨论】:
main() 中的声明范围不是整个程序。它的行为就像任何正常功能一样。所以,是的,本地类对象的析构函数按预期执行。除非程序异常终止。
【讨论】: