当一个对象没有被任何程序引用时,就是垃圾了,垃圾回收机制会定时的将他们清除.
比如:
void Test()
{
Person p=new Person();
。。。
}
在Test方法运行时p一直指向new出来的对象,所以Test方法没有结束,这个对象就一直有指向,当Test方法结束后,这个对象就被垃圾监视器视为垃圾,并在适当的时候将其销毁释放。
而当是一个匿名对象时,比如:
new Person().getName();
在getName()这个方法返回之后,该匿名对象就被析构,他的生命周期就是当前这一行。
析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
|