Constructeur et Destructeur
Les constructeurs et les destructeurs sont des méthodes spéciales pour l'initialisation et la désinitialisation correctes des objets.
Les objets avec des méthodes virtuelles doivent avoir un constructeur et celui-ci doit être appelé pour chaque nouvelle instance de l'objet. Sinon, le pointeur vers la table de méthodes virtuelles dans l'objet ne serait pas initialisé et des erreurs d'exécution se produiraient lors de l'appel des méthodes virtuelles.
Exemple:
Notez que les constructeurs ne peuvent pas être déclarés comme virtuels. Les destructeurs, en revanche, peuvent être virtuels, et cela a souvent du sens.type Figur = object x, y: Real; constructor Init(initX, initY: Real); destructor Done; virtual; procedure Draw; virtual; end; Kreis = object (Figur) radius: Real; constructor Init(initX, initY, initRadius: Real); destructor Done; virtual; procedure Draw; virtual; end; constructor Figur.Init(initX, initY: Real); begin x := initX; y := initY; end; destructor Figur.Done; begin { Effacer ce chiffre... } end; constructor Kreis.Init(initX, initY, initRadius: Real); begin Figur.Init(initX, InitY); radius := initRadius; end; destructor Kreis.Done; begin { Effacer ce cercle... } end;
Le constructeur Kreis.Init appelle d'abord le constructeur du type de base. Au lieu de cela, nous aurions pu initialiser nous-mêmes les deux champs de données x et y, mais en réalité ils ont été introduits de type Figur et c'est donc également responsable de leur initialisation..