我从马可·坎的书学习Delphi和我已经有经验的面向对象,因为我通常使用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?我应该什么时候更喜欢Destroy?
对不起阿尔伯托关于在答案评论中发生的战争。这是一场持续数十年的古代战争。但是,这是一个很好的机会让你更深入地了解手头的主题。 –
不用担心,所有的东西都可以用来学习:) –