在Delphi中,每个类都必须实现析构函数吗?

更新于
2026-10-04 17:48:47
0阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计282个文字,预计阅读时间需要2分钟。

在Delphi应用中创建自定义类时,可以使用以下标准过程:

TCustomClass=class private var1, var2: integer / string / Real / Boolean; procedure P1...; function F1...; public constructor Create; end;

当我在Delphi应用程序中创建自定义类时,我使用标准过程:

TCustomClass = Class private var1,var2 : integer/string/Real/Boolean... procedure P1... function F1... public constructor Create; end; ... CustomClass := TCustomClass.create;

我想知道我是否还必须创建析构函数过程或者在应用程序关闭时自动释放资源?

我总是使用Application作为所有者,很少使用Self或Nil而且我不记得我看到有人在我在Internet上看到的类上声明了Destructor,除非有人使用指针.

如本问题所述,Delphi中的析构函数与C中的逻辑相同:

Should every class have a virtual destructor?

提前致谢.

EDIT1:
正如Free Consulting所提到的,我忘了说其中一个变量可能是TBitmap类型

如果你需要清理一些东西,比如分配的内存,它只需要一个析构函数.例如,如果在构造函数中使用了TClassname.Create(…),则需要在析构函数方法中释放.

当然,可能有许多不同的理由需要析构函数(一直到告知用户他的数据即将被擦除),但这是最常见的一个.

本文共计282个文字,预计阅读时间需要2分钟。

在Delphi应用中创建自定义类时,可以使用以下标准过程:

TCustomClass=class private var1, var2: integer / string / Real / Boolean; procedure P1...; function F1...; public constructor Create; end;

当我在Delphi应用程序中创建自定义类时,我使用标准过程:

TCustomClass = Class private var1,var2 : integer/string/Real/Boolean... procedure P1... function F1... public constructor Create; end; ... CustomClass := TCustomClass.create;

我想知道我是否还必须创建析构函数过程或者在应用程序关闭时自动释放资源?

我总是使用Application作为所有者,很少使用Self或Nil而且我不记得我看到有人在我在Internet上看到的类上声明了Destructor,除非有人使用指针.

如本问题所述,Delphi中的析构函数与C中的逻辑相同:

Should every class have a virtual destructor?

提前致谢.

EDIT1:
正如Free Consulting所提到的,我忘了说其中一个变量可能是TBitmap类型

如果你需要清理一些东西,比如分配的内存,它只需要一个析构函数.例如,如果在构造函数中使用了TClassname.Create(…),则需要在析构函数方法中释放.

当然,可能有许多不同的理由需要析构函数(一直到告知用户他的数据即将被擦除),但这是最常见的一个.