Redefinir le destructeur ou destructeur par defaut?

Redefinir le destructeur ou destructeur par defaut? - C++ - Programmation

Marsh Posté le 09-01-2006 à 14:08:48    

Salut,
 
Je voulais votre avis pour savoir s'il vaut mieux redefinir un destructeur meme si on a rien a mettre dedans?
Du genre:
 

Code :
  1. ~ObjectX {}


 
Ou si c'est pas la peine?

Reply

Marsh Posté le 09-01-2006 à 14:08:48   

Reply

Marsh Posté le 09-01-2006 à 15:39:39    

le destrcuteur est indispensable pour nettoyer ton objet en fin de vie.  
Pour des objets dont les membres sont de types atomiques, ca passe. Ca passe aussi si tu aggreges des objets de maniére statique.  
 
Perso même si le destructeur ne em semble pas obligatorie pour une classe, je le mets toujours, il sera là si un jour tu as besoin de retoucher à ta classe.

Reply

Marsh Posté le 09-01-2006 à 17:05:45    

Oki merci beaucoup :)

Reply

Marsh Posté le 10-01-2006 à 21:11:36    

Joel F a écrit :

le destrcuteur est indispensable pour nettoyer ton objet en fin de vie.  
Pour des objets dont les membres sont de types atomiques, ca passe. Ca passe aussi si tu aggreges des objets de maniére statique.


 
Qu'est-ce que tu as voulu dire par type atomique ? Qu'est ce que tu appelles "aggrégation d'objets de manière statique" ?
Et quel est le rapport avec le destructeur ? Je ne te suis pas la ...
 

Joel F a écrit :

lPerso même si le destructeur ne em semble pas obligatorie pour une classe, je le mets toujours, il sera là si un jour tu as besoin de retoucher à ta classe.


 
Si le destructeur n'est pas déclaré par l'utilisateur, il sera implicitement déclaré (public inline). S'il est utilisé, il entrainera en cascade la définition de tout les destructeurs des membres non statiques et des bases (ceux non déclarés par l'utilisateur).
Le programme sera "ill-formed" si au moins un destructeur des membres non statiques ou des bases est inaccessible.
 
Il est donc inutile de définir le destructeur <edit> vide </edit>, sauf s'il a besoin d'etre soit virtual, protected, private, ou que la définition inline pose problème (auto_ptr<> membre).


Message édité par ++fab le 10-01-2006 à 22:20:35
Reply

Marsh Posté le 10-01-2006 à 22:02:39    

oula ca m'apprendra à poster avec la grippe >.>
 
En gros, le destructeur n'est necessaire que si tu dois gerer de la memoire ou d'autre ressources à liberer a la fin d ela vie de l'instance.
 
Et oui, il est defini de manière automatique apr le compilo
 
/me va prendre une aspirine

Reply

Marsh Posté le 11-01-2006 à 11:18:52    

Ok donc pas de creation de destructeur vide (sauf quand virtuel ou autres cas speciaux)! Compris!

Reply

Marsh Posté le 11-01-2006 à 13:51:08    

Quel est l'intéret de définir le destructeur en private ?
 
J'utilise souvent le constructeur par défaut en private afin d'interdir à l'utilisateur d'avoir un objet non instantanément paramétré.
 
Par contre pour un destructeur : t'interdit à l'utilisateur de construire un objet ayant un attribut de type de ta classe ?

Reply

Marsh Posté le 11-01-2006 à 19:52:15    

je crosi que ca interdit aussi la creation sur la pile.

Reply

Marsh Posté le 11-01-2006 à 20:22:42    

les friend ont le droit de construire des objets "ObjetX" de n'importe quelle classe de stockage. Les autres n'ont pas le droit de détruire l'objet, ce qui ne laisse guère la place qu'aux objet dynamiques, avec interdiction de les désallouer ... Ce qui me parait peut utile.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed