为什么$james1=$james这个语句在程序结束的时候没有调用析构函数释放$james1占用的资源
为什么$james1=$james这个语句在程序结束的时候没有调用析构函数释放$james1占用的资源,虽然$james1没有调用构造函数,但他也是占用资源的啊
为什么$james1=$james这个语句在程序结束的时候没有调用析构函数释放$james1占用的资源,虽然$james1没有调用构造函数,但他也是占用资源的啊
2015-02-02
你没理解对。我猜你是看到打印“Destroying James”只打印了一次才会有这个疑问吧。不过重点可不是在这里,打印的这句话是写死了的,不管是对象$james1还是$james结束,打印的都是这句。重点是打印的次数怎么只有一次,视频里其实讲的很清楚了。
$james1=$james;//二者指向的是同一个对象(同一块内存),都是直接指向同一对象(同一块内存),所以程序结束的时候,只会释放一次资源。
另外:
$james2=&$james;//$james2相当于是间接指向对象,先指向$james,$james直接指向对象,而当$james=null之后,对象内存已释放,$james2找不到$james,自然找不到对象。
举报