C’était pour dire….euh…rien du tout (?)
En fait le constructeur de TObject ne fait rien....ou presque...
constructor TObject.Create;
begin
end;
le destructeur non plus...
destructor TObject.Destroy;
begin
end;
Rôle de NewInstance et FreeInstance
En fait le mots-clé constructor va obliger le compilateur à rajouter un appel à la méthode NewInstance au moment du begin. C'est ce qui différencie le constructeur d'une bête procédure.
Sur le même principe, le mot clé destructor va provoquer un appel à FreeInstance.
Comment fonctionne NewInstance ?
Là encore il s'agit de quelques chose de très simple : il va d'abord récupérer la taille en octets
de l'instance d'une classe grâce à la méthode InstanceSize, puis va appeler un GetMem pour allouer l'espace mémoire auprès du système. Ensuite un appel à InitInstance va initialiser les octets alloué à des valeurs par défaut.
La valeur retournée par InstanceSize est définie au moment de la compilation.
Dans le cas de TObject, la taille en mémoire d'une instance est 4 octets. Elle permet de stocker un pointeur vers la classe associée à l'instance.
Comment fonctionne FreeInstance ?
Il s'agit d'un bête appel à FreeMem.
jeudi 16 août 2007
Constructor, destructor, procedure : Quels différences ?
Publié par
Olivier THEBAULT
Libellés :
delphi
