我试图阅读从任何地方调用和return EXIT_SUCCESS;
从任何地方调用之间的区别,到目前为止我发现的最好的资源是SO 上的这个答案。但是,我想澄清一个细节。main()
exit(EXIT_SUCCESS)
对我来说,最有说服力的反对论点exit()
(如那篇文章中所述)是在局部范围的对象上没有调用析构函数。但这对其他对象意味着什么?如果我exit()
从其他地方调用,离main()
方法堆栈很远,但是在只包含该调用且没有变量的块(甚至是方法)中调用怎么办?堆栈上其他地方的对象还会被破坏吗?
我的用例是这样的:
我有一个应用程序一直提示用户输入,直到给出“退出”命令(基于文本的冒险游戏)。实现这一目标的最简单方法是将“退出”映射到一个简单调用exit(EXIT_SUCCESS)
. 当然,我可以编写它,以便用户可以执行的每个操作都返回一个布尔值,指示游戏是否应该继续,然后就return false
在我想退出时 - 但我唯一一次会返回除此之外的任何true
内容方法 - 然后所有其他操作方法都必须return true
只是因为我想避免exit()
。另一方面,我创建了很多对象并动态分配了很多内存——所有这些都必须由类析构函数来处理,因此它们运行至关重要。
这里的最佳做法是什么?这是一个很好的案例exit()
,还是和方法一样糟糕main
?