gpt4 book ai didi

Delphi TForm 构造函数

转载 作者:行者123 更新时间:2023-12-03 18:59:46 27 4
gpt4 key购买 nike

我已经在 stackoverflow 上找到了一些东西,但它并没有真正解决我的疑问。我知道创建对象的正确方法是在创建后将代码包围在 try-finally block 中。但是关于:

procedure TForm3.FormCreate(Sender: TObject);
begin
a := TClassX.Create;
end;

然后调用:
procedure TForm3.FormDestroy(Sender: TObject);
begin
a.Free;
end;

在哪里 a: TClassX;TForm3 内的公共(public)声明类(class)。我应该为表单创建构造函数和析构函数,还是可以使用上面的代码?安全吗?

最佳答案

try/finally 在那里,或者至少是等价的。它只存在于您的代码之外,位于调用堆栈的更高位置。就像是:

Form1 := TForm1.Create(nil);
try
// do stuff
finally
Form1.Free;
end;

您的 OnCreateOnDestroy处理程序分别从构造函数和析构函数调用,因此受到保护。

只要每个人都遵守规则,就不会泄露任何东西。这里的规则是在构造函数中创建对象并在析构函数中销毁。实际创建对象的人有责任确保它无论如何都被销毁。但这是您类(class)的消费者而不是您的任务。

关于Delphi TForm 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39548434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com