对象的析构函数在的对象销毁前被调用,对象何时销毁也与其作用域有关。例如,全局对象是在程序运行结束时销毁,自动对象是在离开其作用域时销毁,而动态对象则是在使用delete运算符时销毁。
从某种意义上来说是调用析构函数的时候
比如说作为局部变量当这个函数结束或者返回饿时候
比如说new出来的对象当这个对象被delete的时候
比如说全局变量的时候应该是程序结束运行的时候(main返回之后)
还有就是无名字的临时变量会稍瞬即逝,例如自定义类型class A
A().get();
这个无名字的变量从构造,然后调用get这个成员函数之后,马上就会被析构
特殊情况是返回值临时变量的运行期,例如函数fun的返回值是自定义类型A,
A fun(void){A b;return b;};
假设获取返回值的地方是这样的A& c = fun();那么没有名字的临时返回值会跟随c的生命周期决定,当然不能超过这个函数范围
⋯⋯一时间想不到其他特殊情况了
局部动态变量是作用域结束后就销毁
new出来的变量在执行delete时被销毁
静态变量在main结束时被销毁
全局变量在main结束后被销毁
析构函数运行的时候
JAVA中有垃圾处理机制