亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Delphi關于析構函數destroy的用法?

Delphi關于析構函數destroy的用法?

蝴蝶不菲 2019-02-06 10:07:25
destructor TMan.destroy; {從祖先繼承一個析構函數}begininherited destroy; end;然后在用AMan:= TMan.create;創建對象執行AMan.destroy;會出現什么情況?此時AMan被銷毀了嗎,為什么此時AMan<> nil?明白AMan.Free的作用,問題是現在想知道 AMan.destroy;后為什么還會AMan<> nil?
查看完整描述

2 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

調用:AMan.Free會比AMan.destroy安全,這兩個方法都不會將變量置為nil;
常規寫法是FreeAndNil(AMan);這個函數除了執行對象的Free,還要將變量置為nil;

查看完整回答
反對 回復 2019-03-16
?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

Free方法實際上是調用的Destroy:
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;
Free 首先檢查對象指針是否為nil, 因此更安全. 而 Destroy只是釋放了對象所分配的內存, 并不將對象指針置為nil, 需要手動設置: AMan = nil;
所以一般這樣做法是較安全的: FreeAndNil(AMan);



查看完整回答
反對 回復 2019-03-16
  • 2 回答
  • 0 關注
  • 1299 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號