为了账号安全,请及时绑定邮箱和手机立即绑定

析构函数是否被调用了两次呢?

那请问老师:析构函数是否被调用了两次呢?

$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。

=。=个人猜测,请老师解答我的疑问。

正在回答

2 回答

一个对象被析构之后就不存在了,所以不可能再调用一次它的析构函数。

$james=null;之后,之前被james这个变量引用的那个对象没人在使用了,所以就被释放,也就是调用一次析构。jordon的对象还被jordon这个变量引用,所以它在最后程序退出时才被释放,所以在From now on James will not be used.这条语句之后调用析构函数,没有所谓的“后进先出”。

0 回复 有任何疑惑可以回复我~
#1

全民工作狂 提问者

非常感谢!
2016-01-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

析构函数是否被调用了两次呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信