我在PHP中运行一个简单的构造函数/析构函数
为什么输出以两行开头
创建了狗0 创造了狗1
什么时候应该
创建了狗0 摧毁了狗0
{{1}}
完整输出
{{1}}
答案 0 :(得分:3)
从for循环的第一次迭代开始。在幕后,内存中有一个空间用于存放Dog()对象。
然后为新变量$dog
分配指向内存中Dog()地址的指针/引用。我们看到了第一条创建的消息。
现在我们知道,只有当没有更多的引用时,第一个Dog()才会被销毁。
考虑到这一点,第二次循环,重复相同的过程。内存中的新空间被分配给新的Dog(),然后该内存的地址再次被赋予$dog
。第二个创建消息。
现在原始的狗没有指向它的引用,所以它可以被销毁。首先破坏消息。
遵循相同的过程,您应该看到为什么其余的消息会像他们一样读出来。