初探Object Pascal的類(四)

2021-09-08 21:40:26 字數 1852 閱讀 8101

類的析構函式

析構函式也是一種特殊的方法,此方法在物件消失前會被自動呼叫。

析構函式可以看成是建構函式的對立面,它通常用來釋放類所佔的記憶體,或者做一些清除工作。乙個類不一定必須要有乙個析構函式,因為基本的類析構函式可以代替。像建構函式一樣,析構函式也沒有返回值。

儘管類可以有多重析構函式,但它不具有一般性,若只有乙個析構程式,就應該把它命名為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很容易地就可以轉成用...