IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Classe virtuelle detructeur virtuel


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut Classe virtuelle detructeur virtuel
    bonjour

    Je crois avoir compris que une classe virtuelle (ie une classe avec au moins une fonction virtuelle?) doit avoir un destrcteur virtuel type "virtual ~distance()".

    mais si je n'est rien à detruire dans ma classe distance???

    Cordialement

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    - Une classe virtuelle n'existe pas. On peut parler de classe abstraite, lorsque celle-ci n'est pas instanciable (contient au moins une virtuelle pure, ou constructeurs protégés).

    - Il n'est nécessaire de déclarer le destructeur virtuel que si ta classe est utilisée polymorphiquement, c'est-à-dire si tu manipules des dérivées en tant que distance. Si tu ne le fais pas, même si tu n'as rien à détruire dans distance, le constructeur des classes de base ne sera pas appelé.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    Merci j'utilisait en effet des classes dérivé.

    Merci de m'avoir éclairés!

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Laurent Gomila
    Si tu ne le fais pas, même si tu n'as rien à détruire dans distance, le constructeur des classes de base ne sera pas appelé.
    C'est plus gênant que ça. Ce n'est pas juste qu'un destructeur n'est pas appelé, c'est un comportement indéfini. Il peut se passer n'importe quoi.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. classe abstraite & méthodes virtuelles
    Par Tho123 dans le forum C++
    Réponses: 4
    Dernier message: 24/04/2012, 00h53
  2. Class et methodes virtuelles, surcharge
    Par gloubi dans le forum Langage
    Réponses: 3
    Dernier message: 14/03/2008, 02h02
  3. Virtuelles ou virtuelles pures
    Par womannosky dans le forum C++
    Réponses: 15
    Dernier message: 12/11/2007, 06h48
  4. Réponses: 15
    Dernier message: 05/07/2007, 02h29
  5. Constructeurs et classe de base virtuelle
    Par Paul Atreide dans le forum C++
    Réponses: 7
    Dernier message: 06/11/2006, 18h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo