Delphi   发布时间:2022-04-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了delphi – 没有override指令的析构函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这段代码有什么问题:
type
    TobjAvisos = class

        public
            constructor Create;
            destructor Free;


    end;

implementation


constructor TobjAvisos.Create;
Begin
    inherited Create;

end;

destructor TobjAvisos.Free;
begin
    inherited Destroy;

end;

它编译没有警告,但FixInsight返回一个警告:“没有覆盖指令的W522析构函数”

解决方法

@H_772_9@ 问题是你应该覆盖虚拟析构函数Destroy.该虚拟析构函数是由非虚方法Free调用的.

就目前而言,破坏你的类的唯一方法是直接调用析构函数.但是Delphi类有望支持通过Free方法销毁.

你的课应该是这样的

type
  TobjAvisos = class
  public
    constructor Create;
    destructor Destroy; override;
  end;

覆盖虚拟析构函数Destroy是使用Free方法使类正常工作的唯一方法.

现在,使用虚拟析构函数Destroy和支持Free有两个主要原因:

>可以安全地在零对象引用上调用Free.析构函数不能.这对于异常处理的对象构造机制至关重要.
> SupporTing Free允许对象被安全地销毁,即使对象的运行时类型比对象引用的编译时类型更加派生.

有关相关主题的一些有用的阅读可以在这里找到:Why should I not use “if Assigned()” before using or freeing things?

大佬总结

以上是大佬教程为你收集整理的delphi – 没有override指令的析构函数全部内容,希望文章能够帮你解决delphi – 没有override指令的析构函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。