我们在 Delphi 中创建的每个 Class 都需要有析构函数吗?
Does every Class we create in Delphi need to have destructor?
当我在 Delphi 应用程序中创建自定义 Class 时,我使用标准程序:
TCustomClass = Class
private
var1,var2 : integer/string/Real/Boolean...
procedure P1...
function F1...
public
constructor Create;
end;
...
CustomClass := TCustomClass.create;
我想知道我是否总是必须同时创建 Destructor 过程,或者当应用程序关闭时资源是否会自动释放?
我总是使用 Application 作为所有者,很少使用 Self 或 Nil,我不记得我在互联网上看到 类 上有人声明 Destructor,除了有人使用指针时。
Delphi 中的析构函数背后的逻辑是否与 C++ 中的逻辑相同,如本问题所述:
Should every class have a virtual destructor?
提前致谢。
编辑1:
正如免费咨询所提到的,我忘了说其中一个变量可能是 TBitmap 类型
如果你需要清理一些东西,比如分配的内存,它只需要一个析构函数。例如,如果你在构造函数中使用了TClassname.Create(...),你需要在析构函数方法中进行free。
当然,需要析构函数的原因可能有很多(一直到通知用户他的数据即将被擦除),但这是最常见的一个。
当我在 Delphi 应用程序中创建自定义 Class 时,我使用标准程序:
TCustomClass = Class
private
var1,var2 : integer/string/Real/Boolean...
procedure P1...
function F1...
public
constructor Create;
end;
...
CustomClass := TCustomClass.create;
我想知道我是否总是必须同时创建 Destructor 过程,或者当应用程序关闭时资源是否会自动释放?
我总是使用 Application 作为所有者,很少使用 Self 或 Nil,我不记得我在互联网上看到 类 上有人声明 Destructor,除了有人使用指针时。
Delphi 中的析构函数背后的逻辑是否与 C++ 中的逻辑相同,如本问题所述:
Should every class have a virtual destructor?
提前致谢。
编辑1: 正如免费咨询所提到的,我忘了说其中一个变量可能是 TBitmap 类型
如果你需要清理一些东西,比如分配的内存,它只需要一个析构函数。例如,如果你在构造函数中使用了TClassname.Create(...),你需要在析构函数方法中进行free。
当然,需要析构函数的原因可能有很多(一直到通知用户他的数据即将被擦除),但这是最常见的一个。