当退出(0)用于从程序退出时,析构函数用于本地 不调用作用域的非静态对象。但是析构函数是 如果使用return 0则调用。注意静态对象将是 即使我们调用exit()也要清理。
这种逻辑背后应该有一些原因。我只是想知道它是什么?谢谢。
答案 0 :(得分:8)
在exit( 0 )
的情况下,您正在调用一个函数。您
不要指望调用局部变量的析构函数
你正在调用一个函数。并且编译器不知道,
先验,exit( 0 )
有任何特殊之处。
实际上,这个基本原理实际上只适用于C ++
例外。该标准可以重新定义exit()
以抛出一个
用参数实现定义的异常,并指定
对main
的调用包含在一个捕获的try块中
此异常,并将返回代码传递回系统。
这意味着exit
完全不同
但是,C和C ++中的语义;无论如何,一直没有
委员会提出改变的建议。