即便新类既有合成又有继承,绝大多数情况下,你都无须担心清理的问题;子对象通常都可以交由垃圾回收器去处理。如果真的需要进行清理,那就只能辛苦一点,为新类创建一个dispose()方法了(你也可以选一个你觉得更好的名字)。而且在继承情况下,如果垃圾回收过程中还要做一些特殊的处理,那你还必须在派生类里覆写基类的dispose()。当你编写派生类的dispose()的时候,要记住第一件事就是调用基类的dispose(),这点非常重要。因为不这样做的话,基类就不会得到清理。
对象与对象之间有可能会有依赖关系,因此清理的顺序应该与初始化的顺序相反。对数据成员而言,这就是说它们的清理顺序应该与声明的顺序相反(因为数据的初始化是按照声明的顺序进行的)。对基类而言(它采用了C++拆构函数的形式),你应该先进行派生类的清理,再进行基类的清理。这是因为派生类的清理可能需要调用某些基类的方法,也就是说要留着基类,因此它不能过早地被清除掉。你可以从程序的输出看出,对象各部分的清理顺序,正好与它们创建的顺序相反。