【发布时间】:2016-12-24 18:30:54
【问题描述】:
情况
我正在从 Marco Cantu 的书中学习 Delphi,并且我已经有了 OOP 的经验,因为我通常使用 Java 和 PHP。为了更好地理解我正在阅读的内容,我做了这个测试:
type
TFraction = class
private
number: double;
num, den: integer;
fraction: string;
function hcf(x: integer; y: integer): integer;
public
constructor Create(numerator: integer; denominator: integer); overload;
constructor Create(value: string); overload;
function getFraction: string;
end;
这是一个超级简单的类,可以将十进制数转换为分数。我不包括定义构造函数和函数的代码的其他部分,因为它们对我的问题没有用。我正在以这种方式创建对象。
var a: TFraction;
begin
a := TFraction.Create(225, 35);
ShowMessage(a.getFraction);
//The output of ^ is 45/7
a.Free;
end;
问题
据我所知,我知道一旦我使用了该对象就必须摆脱它,事实上我正在使用Free。通过这种方式,我释放了内存并避免了内存泄漏。
顺便说一句,我还可以覆盖destructor。我不太了解Free 和Destroy 的行为。当我必须摆脱不再需要的对象时,我会使用Free。当我覆盖析构函数时,我可以释放对象并进行其他操作吗?
简而言之,什么时候使用 Free 比较好?我什么时候应该更喜欢毁灭?
【问题讨论】:
-
对不起,Alberto 关于答案 cmets 中正在进行的战争。这是一场持续了数十年的古老战争。但这是您进一步了解当前主题的绝佳机会。
-
别担心,一切都对学习有用:)
标签: delphi