Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1073 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] Problème avec les destructeurs de class

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Problème avec les destructeurs de class

n°42200
Alload
Posté le 22-06-2001 à 18:52:09  profilanswer
 

Comment qu'on utilise le destructeur d'une class une fois que n'en a plus besoin?
 
Je sais qu'il faut mettre ça: ~CNomDeLaClass(); en public, mais comment qu'on l'appel réellement une fois dans le programme?

mood
Publicité
Posté le 22-06-2001 à 18:52:09  profilanswer
 

n°42201
janoscoder
Posté le 22-06-2001 à 18:55:30  profilanswer
 

Le destructeur n'est généralement pas appelé explicitement. Il est appelé quand l'élément sort de la portée courante:
 
ex
 
while(truc)
{
 Maclasse c;   //ctr par défaut appelé
....
} //en sortant c est détruit par un appel à son destructeur
 
va voir mon site, y'a une section sur les destructeurs.


---------------
-----------------------
n°42204
janoscoder
Posté le 22-06-2001 à 18:58:33  profilanswer
 

Ah oui, si t'as une classe qui contient des données en grande quantité et que tu ne veux plus de ces données, tu peux vider la classe (par ex, si c'est une bitmap, faire image.redim(0,0)); et donc libérer la mémoire.
En général, détruire un objet alors qu'il est encore accessible est un hérésie, car le but même du couple constructeur/destructeur est de s'assurer qu'un objet accessible est utilisable, en bon état!


---------------
-----------------------
n°42206
Alload
Posté le 22-06-2001 à 19:05:02  profilanswer
 

J'avais pigé ce qui est sur ton site, je voudrais juste savoir comment on écrit la syntaxe pour utiliser ce destructeur dans le main() par exemple.
 
J'ai essayé ça:
 
CClass Test;
~Test();
 
Mais ça marche pas. Faut mettre quoi?

n°42210
janoscoder
Posté le 22-06-2001 à 19:12:49  profilanswer
 

~Test()
ça fait Test.operator()().operator ~();
 
il faut faire
 
Test.~CClass();
 
je vais le rajouter sur le site...


---------------
-----------------------
n°42211
Alload
Posté le 22-06-2001 à 19:19:51  profilanswer
 

Thanks ça marche impec.
:)

n°42218
electricbl​ue
Pas très inspiré...
Posté le 22-06-2001 à 19:57:32  profilanswer
 

Pour les pointeurs, ce qui suit marche pour la destruction de l'objet:
 
Truc * montruc;  //sans aucune allusion
....
delete montruc;

n°42220
verdoux
And I'm still waiting
Posté le 22-06-2001 à 20:02:49  profilanswer
 

Quels sont les cas où il est intéressant d'appeler directement le destructeur ?

n°42223
tgrx
My heart is pumping for love
Posté le 22-06-2001 à 20:04:27  profilanswer
 

Quand on a un gros objet qui prend de la place memoire, et qu'on a besoin de memoire tout de suite, et qu'on ne peut pas attendre la fin du bloc ??

n°42227
janoscoder
Posté le 22-06-2001 à 20:11:11  profilanswer
 

ben no tgrx, c'est pas beau un objet qui n'est plus en état stable (non initialisé)
 
Un bon exemple de cas utile c'est la classe d'allocateur utilisée par la STL. Elle implémente les alloc/desalloc genre new/delete, et pour ça il faut appeler le destructeur, parce que delete, ce n'est que appel au destructeur + free.


---------------
-----------------------
mood
Publicité
Posté le 22-06-2001 à 20:11:11  profilanswer
 

n°42229
verdoux
And I'm still waiting
Posté le 22-06-2001 à 20:30:20  profilanswer
 

En effet:
icare:/usr/include/g++-3$ grep "\->\~" *.h
stl_alloc.h:  void destroy(pointer __p) { __p->~_Tp(); }
stl_alloc.h:  void destroy(pointer __p) { __p->~_Tp(); }
stl_construct.h:  __pointer->~_Tp();


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] Problème avec les destructeurs de class

 

Sujets relatifs
probleme en php avec odbc_num_rows??[XML] Problème avec les caractères accentués
[javascript] c'est un problème d'algorithme?Visual C++ et ODBC, problème avec certaines requêtes
[unreal tournament editeur]big probleme,simple je pense.[PHP] Problème d'envoi mail par php
[C++] Problème avec les tableauxProbleme avec PERL DBD-ORACLE v.1.07 sur HPUX10.20
Remote Scripting j'ai un problème...[windows/windev 5.5] problème d'impression...
Plus de sujets relatifs à : [C++] Problème avec les destructeurs de class


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR