Destructor/fi
From Lazarus wiki
Jump to navigationJump to search
│
Deutsch (de) │
English (en) │
suomi (fi) │
Varattu sana destructor
kuuluu olio-ohjelmointiin.
Purkajaa käytetään vapauttamaan käytetyt resurssit kuten muisti.
Purkaja on aina tehtävä siten, että kun muistia vapautetaan niin koko luokan (olion) käyttämä muisti vapautetaan eikä näin ollen tapahdu muistivuotoa.
Olion purkaminen tapahtuu kutsumalla luokan free
metodia. Free
:n kutsuminen aiheuttaa destroy
-kutsun.
Siinä myös tarkistetaan ettei self
-muuttujan arvo ole nil
.
Esimerkiksi:
program Project1;
{$mode objfpc}{$H+}
type
// luokan määritelmä
{ TClass }
TClass = Class
constructor Create;
destructor Destroy; override; // sallii vanhemman luokan purkajan käytön
end;
// luokan rakentaja
constructor TClass.Create;
begin
Writeln('Rakennetaan olio');
end;
// luokan purkaja
destructor TClass.Destroy;
begin
Writeln('Puretaan olio');
inherited; // Käyttää myös vanhemman luokan purkajaa
end;
var
// kerrotaan luokan muuttuja
myclass: TClass;
begin
myclass:= TClass.Create; // alustaa olion kutsumalla oman luokkaansa rakentajaa
Writeln ('Jotain koodia ...');
myclass.Free; // Free kutsuu oman luokan Destroy purkajaa
Writeln ('Paina jotain näppäintä');
Readln;
end.