gpt4 book ai didi

delphi - 构造函数中的Delphi对象引用

转载 作者:行者123 更新时间:2023-12-03 18:30:16 25 4
gpt4 key购买 nike

假设我的单位中有这种代码:

TClass = class(tobject)
// ... implementation ...
end;

TControl = class(tobject)
private
FCheck: TClass
public
constructor Create(value: TClass);
// ... implementation...
end;

constructor TControl.Create(value: TClass);
begin
FCheck := value;
end;


如您所见,控件类将在构造函数中将 TClass作为参数,因此我需要执行以下操作:

//The 'a' is a TClass that has already been created

c := TControl.Create(a);
try
//... do what I need ...
finally
c.Free;
end;


这是非常基本的:我将使用 a作为构造函数的参数,但是我不知道我在做什么是否安全。我有内存泄漏吗?

在构造函数中,我执行 FCheck := value,我猜这是正确的,因为我正在传递对该对象的引用。我必须在TControl中实现析构函数以释放 FCheck吗?我无法理解我是否正确管理了FCheck对象。

最佳答案

不,您无需从类内部销毁该对象,前提是该对象已具有其他位置的所有者。但是,实际拥有它的人要由您100%决定,但它只能有一个所有者。含义是负责该实例生存期的类。这完全取决于您的特定要求。它最初可能在一个地方拥有,然后在某个时候可以将所有权转让给其他地方。在您的情况下,可以将其传递给此构造函数,然后考虑该所有者。如果是这种情况,那么是的,您确实需要从类中销毁它。但同样,它在任何给定时间都应该只有一个所有者。

关于delphi - 构造函数中的Delphi对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42014304/

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