我们在Delphi中创建的每个类都需要具有析构函数吗?

Does every Class we create in Delphi need to have destructor?

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

1
2
3
4
5
6
7
8
9
10
11
12
TCustomClass = Class
 private
  var1,var2 : integer/string/Real/Boolean...
  procedure P1...
  function F1...
 public
  constructor Create;
end;

...

CustomClass := TCustomClass.create;

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

我总是使用应用程序作为所有者,很少是self或nil,而且我不记得在我在Internet上看到的类上有人声明析构函数,除了有人使用指针的时候。

在Delphi中,析构函数后面的逻辑与C++中所描述的一样吗?

每个类都应该有一个虚拟析构函数吗?

事先谢谢。

Eddi1:正如免费咨询提到的,我忘记说其中一个变量可能是tbitmap类型


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

当然,有很多不同的原因需要一个析构函数(一直到通知用户他的数据即将被擦除为止),但这是最常见的一个。