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

来源:3-5 析构函数-PHP面向对象编程

全民工作狂

2015-09-17 12:35

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

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

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

写回答 关注

1回答

  • 慕设计1393982
    2015-12-18 15:17:31
    已采纳

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

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

    全民工作狂

    非常感谢!

    2016-01-02 17:15:56

    共 1 条回复 >

PHP面向对象编程

从容应对面试官的知识宝典,带你握面向对象的最重要的核心能力

70146 学习 · 361 问题

查看课程

相似问题