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

  FORUM HardWare.fr
  Programmation
  C++

  class abstraite destrcteur virtuelle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

class abstraite destrcteur virtuelle

n°1888802
frenchtouc​co
Posté le 28-05-2009 à 07:46:20  profilanswer
 

Hello,
 
un petit doute sur un point un peu de base mais bon...
 
Dans une classe abstraite, faut-il toujours déclarer le desctructeur virtual avec, même avec un corp vide finalement ?
 
ie: virtual ~A(){}
 
Merci.

mood
Publicité
Posté le 28-05-2009 à 07:46:20  profilanswer
 

n°1888803
kadreg
profil: Utilisateur
Posté le 28-05-2009 à 07:50:31  profilanswer
 

Ce n'est pas obligatoire, mais ça fait des effets très sale et un nid à fuite si on ne le fait pas :  
 
http://www.cppfrance.com/codes/UTI [...] 39755.aspx


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°1888811
frenchtouc​co
Posté le 28-05-2009 à 08:17:33  profilanswer
 

et dans le cas d'une interface, avec que des virtual pur, il faut aussi déclarrer ler destructeur virtual pur ?


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1888833
frenchtouc​co
Posté le 28-05-2009 à 09:35:48  profilanswer
 

il faut mieux déclarer protected ??


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1888845
kadreg
profil: Utilisateur
Posté le 28-05-2009 à 10:00:20  profilanswer
 

un destructeur n'a pas de visibilité, il a pas a etre appelé explicitement :o
 
Et je vois pas pourquoi ce serait différent avec une interface en fait, l'exemple de cppfrance est clair :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°1888848
frenchtouc​co
Posté le 28-05-2009 à 10:08:53  profilanswer
 

je pense que c'est plus propre de le mettre protected,c'est le plus logique, on veut que les classes dérivés y est accés mais on ne veut pas qu'une gus externe l'appel explicitement...Le problème est que si une classe prends cette classe comme composition, le destructeur de la 2nd classe ne pourra alors pas appeler le destructeur de la 1ere classe (car destructeur protected), correct ?
 
EDIT: en faite on mets protected le destructeur de la classe de base
si on veut interdire  un user de faire delete de la classe de base, mais alors dans quel cas c'est intéréssant ???Lorsque on ne veut jamais manipuler une hierarchie de classe directement avec son interface ? space


Message édité par frenchtoucco le 28-05-2009 à 10:32:08

---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1888859
frenchtouc​co
Posté le 28-05-2009 à 10:23:28  profilanswer
 

le problème avec les interfaces est le suivant , est ce qu'il faut faire 1,2, 3 ou 4 :
 
1 - virtual ~A();  
2 - virtual ~A(){}  
3 - virtual ~A() = 0;
4 - virtual ~A() = 0;  ~A::A()?
 
On est obliger de fournir une implémentation du destructeur , correct ?
 
Donc dans une interface ou une classe abstraite on doit TOUJOURS implémenter un desctructeur et en plus le mettre virtual, correct ? donc seule 2 ou 4 sont bonnes?


Message édité par frenchtoucco le 28-05-2009 à 10:25:54

---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1889029
Joel F
Real men use unique_ptr
Posté le 28-05-2009 à 15:28:07  profilanswer
 

2/

n°1889173
Taz
bisounours-codeur
Posté le 28-05-2009 à 21:08:10  profilanswer
 

oui 2, une classe sans destructeur, ça n'est pas possible.

n°1889576
frenchtouc​co
Posté le 29-05-2009 à 16:39:03  profilanswer
 

juste histoire d'être carré sur ce point, quelqu'un peut m'expliquer l'intérêt et l'usage en pratique de déclarer le destructeur protected? Merci


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
mood
Publicité
Posté le 29-05-2009 à 16:39:03  profilanswer
 

n°1889580
Joel F
Real men use unique_ptr
Posté le 29-05-2009 à 16:45:51  profilanswer
 

tu ne peut pas insatncier une classe dont le destruceur est protégé.


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

  class abstraite destrcteur virtuelle

 

Sujets relatifs
[VB] accès base SQL via "class Linq to SQL"commande jar et chemin relatifs des class
Acceder à une class à partir d'un autre fichierMenu en DIV (id ou class ?)
Verifier champs par classUtilisation de DDK pour créer une carte réseaux virtuelle
Tomcat Cannot load JDBC driver class 'org.postgresql.Driver'probleme désérialisation class socket
Class tween : Création à la volée dans une boucle ?[java] super class et constructeur
Plus de sujets relatifs à : class abstraite destrcteur virtuelle


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