gpt4 book ai didi

Delphi析构函数: executing code after inherited call?

转载 作者:行者123 更新时间:2023-12-03 14:51:18 29 4
gpt4 key购买 nike

在 Delphi 中,在析构函数中继承调用之后执行代码真的可以吗?

您可以在 System.Classes 中找到它:

destructor TThread.Destroy;
begin
[...]
inherited Destroy;
FFatalException.Free;
end;

我认为,在调用继承的 Destroy 方法后访问实例成员是一个坏主意。

最佳答案

在调用继承的析构函数之后执行代码是完全安全的,只要该代码不依赖于已被继承的析构函数销毁的内容。同样,在调用继承的构造函数之前执行代码也是安全的,只要代码不依赖于该继承的构造函数中实例化的任何内容。

但这确实不是一种好的风格。有时,某些原因会导致您使用此类代码,但通常应将此类原因视为设计中存在问题的指示。

在您给出的示例中,根本不需要那样编写代码。对 FFatalException.Free 的调用完全可以在调用继承的析构函数之前发生。

关于Delphi析构函数: executing code after inherited call?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17296001/

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