提示:一个类通常有一个析构器名为Destroy。Delphi允许声明多个析构器——但这一特性并未带来什么 方便之处。定义多个析构器通常容易使人感到迷惑并且没有什么实际意义。
在Delphi执行析构器中的代码之前,它先调用虚方法BeforeDestruction。你可以覆盖该方法以确保在析构以前有些事务被处理掉。这个特性使你能写出安全的类代码,而不必担心派生类会在何时调用基类的析构器。
提示:定义一个类时,你可能需要覆盖名为Destroy的析构器方法,但是不要重新定义Free方法。释放一个对象时,你要调用的是Free方法而不是析构器。这一区别非常重要,因为Free首先检查对象引用是否为nil,只有引用非空时才调用Destroy方法。只在某些特定的场合,才需要重新定义Free方法(比如很少用用到的单元VirtIntf中的TInterface类),因为可能调用Free比Destroy更重要。
假如构造器方法和AfterConstruction方法引发了异常, Delphi会自动调用析构器。写一个析构器时,必须意识到正在被撤销的对象有可能没有被完全的创建。Delphi确保所有的字段初始值为空,但假如在构造器中引发了异常,则可能导致某些字段已被初始化而有些未被初始化。如果构造器直接释放对象和指针,那么……其实不必担心这一点,因为Free方法和FreeMem过程都能自动检查指针是否为空。如果构造器调用其他方法,那么也会事先检查指针是否为空。
上一页 [1] [2]
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18