那请问老师:析构函数是否被调用了两次呢?
$james=null;这个调用了一次析构函数
打印:
From now on James will not be used.
然后程序结束以后又调用一次析构函数。
打印:
Destroying James
Destroying Jordan
看这个打印的顺序,好像是“后进先出“的顺序。
James在后,先清空。
Jordan在先,后清空。
然而这一句:From now on James will not be used.插在二个destroy之间。
是一起把james清空完了,接着清jordan。
=。=个人猜测,请老师解答我的疑问。
一个对象被析构之后就不存在了,所以不可能再调用一次它的析构函数。
$james=null;之后,之前被james这个变量引用的那个对象没人在使用了,所以就被释放,也就是调用一次析构。jordon的对象还被jordon这个变量引用,所以它在最后程序退出时才被释放,所以在From now on James will not be used.这条语句之后调用析构函数,没有所谓的“后进先出”。