類的析構函式
析構函式也是一種特殊的方法,此方法在物件消失前會被自動呼叫。
析構函式可以看成是建構函式的對立面,它通常用來釋放類所佔的記憶體,或者做一些清除工作。乙個類不一定必須要有乙個析構函式,因為基本的類析構函式可以代替。像建構函式一樣,析構函式也沒有返回值。
儘管類可以有多重析構函式,但它不具有一般性,若只有乙個析構程式,就應該把它命名為destroy,這不只是乙個習慣。當要釋放類的例項時,就可以呼叫free方法,free方法是tobject類的方法,把類從記憶體中刪除之前,free方法將呼叫類的destroy方法,這是釋放有關類所佔記憶體的一般方法。
例如:
var
rect1, rect2: tmyrect;
begin
rect1 := tmyrect.create;
rect2 := tmyrect.createval(0, 0, 100, 100);
rect1.free;
rect2.free;
end.
type
tmyrect = class
private
left: integer;
top: integer;
right: integer;
bottom: integer;
text: pchar;
public
function getwidth: integer;
function getheight: integer;
procedure setrect(aleft, atop, aright, abottom: integer);
constructor create;
constructor createval(aleft, atop, aright, abottom: integer);
destructor destroy; override;
end;
constructor tmyrect.create;
begin
inherited create;
text := allocmem(1024);
end;
destructor tmyrect.destroy;
begin
freemem(text);
inherited;
end;
修改後的tmyrect類在它的建構函式中為乙個pchar型別字串text分配了儲存空間,並在析構函式中釋放這些儲存空間。
在tmyrect類宣告中,我們看看析構函式的宣告,如下:
destructor destroy; override;
注意,結尾有乙個關鍵字override,這個關鍵字指示編譯器覆蓋基類中的方法,講到這裡有點超前了,在後面會講解「繼承」。
note一般來說,將呼叫inherited作為建構函式的第一句和析構函式的最後一句。
類的析構函式.rar
初探Object Pascal的類(九)
繼承 inheritance 在object pascal中,類的最強大功能之一就是可以通過繼承得到擴充套件。繼承 inheritance 是指取乙個現有的類,通過由它派生新類來增加功能。開始取得類稱為基類 base class 或者祖先類 ancestor class 新建立的類稱為派生類 der...
教程 ObjectPascal快速上手筆記01
objectpascal快速入門筆記01 注釋 圓括號 星號注釋 塊注釋 雙斜槓注釋 行注釋 不同形式注釋可巢狀使用。物件命名 對大小寫不敏感 不能帶有空格 第乙個字母盡量不要帶t 類 f 類中私有成員 i 介面 識別符號 ascii碼字符集 任意長不帶空格的字串 第一字元必須是字母或下劃線 變數宣...
Object Pascal與C 竟然是相同的!
object pascal與c 的相同之處!竟然這麼相同,包括相似的程式結構 而且,object pascal的語法竟然比c 還嚴格 怪不得borland能把object pascal和c 能混用 我看到以前有人說要把delphi中的vcl用c來寫,其實根本沒這個必要,這個vcl很容易地就可以轉成用...