我读了“Programming Perl”一书,在某些地方相当复杂。其中一个地方是第 12 章“对象”中的“实例析构函数”部分。本节说:
- Perl 中的对象在不再引用它们时会被销毁。
DESTROY
通过在其类中定义方法,有机会在对象将被回收之前捕获控制。- 尽管在 Perl 中很少需要析构函数,但某些对象可能有,例如,文件句柄或数据库连接,它们在内存系统之外。所以有必要专门去参加。
- Perl 不做分层破坏。
然后有一段我没看懂:
这仅适用于继承的类;仅包含在当前对象中的对象(例如,较大散列中的一个值)将被自动释放和销毁。这就是为什么仅仅通过聚合(有时称为“has-a”关系)的容器通常比继承(“is-a”关系)更清晰和更清晰的原因之一。
我不明白这是什么意思。这是否意味着不简单 地包含在当前对象中的对象不会被 自动释放和销毁?
我确实知道DESTROY
在垃圾收集上调用的 a 是最近的,也是唯一的。DESTROY
当实例没有引用时,不会调用其他覆盖的方法。但是,据我了解,当将实例的引用放置在另一个对象中时,会出现相同的行为。
有人会如此愉快地解释并提供代码示例吗?
更新:
实际上我正在寻找的是对This only 适用于继承类的解释;原来是这样的话:
如果您有一个类的实例并且它有一个DESTROY
方法,那么该方法将覆盖DESTROY
父类的方法,但这不适用于对象,即has-a
与相关对象的关系。它DESTROY
不会被覆盖
对不起,不清楚的问题,它会更适合英语语言和用法。谢谢大家。