我從馬可·坎的書學習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?
對不起阿爾伯託關於在答案評論中發生的戰爭。這是一場持續數十年的古代戰爭。但是,這是一個很好的機會讓你更深入地瞭解手頭的主題。 –
不用擔心,所有的東西都可以用來學習:) –