Il nest pas possible dappeler explicitement un constructeur (il faut passer par une initialisation), mais on peut appeler explicitement un destructeur.
Il sagit dune technique un peu spéciale pour programmeurs chevronnés. Elle est basée sur le fait que lon peut créer un objet qui ne réserve pas de place mémoire. Voici un exemple :
static char tampon[sizeof(exemple)];exemple *pex = (exemple*) tampon; // pas de place occupée dans le tas
Ici la variable pointée par pex
est donc logée dans le tampon, et non dans le tas ; on suppose de plus quil nest pas nécessaire dappeler un constructeur (ce qui nest guère prudent, mais peut marcher si la classe utilise le constructeur par défaut standard).
Comme pex
nest pas dans le tas, il ne faut surtout pas appeler delete
avec pex
, car on risquerait des ennuis. Pour appeler le destructeur, il faut donc un appel explicite, avec le nom complet :
pex->exemple::~exemple();
Nous verrons au chapitre 7 un autre exemple basé sur une redéfinition de lopérateur new
.
Précédent | Sommaire | Suivant |