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

Langage C++ Discussion :

Desctructeur virtuel et default c++0x


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut Desctructeur virtuel et default c++0x
    Bonjour,
    désolé de vous innodé de question aujourd'hui, mais j'aimerai savoir si le comportement suivant est "normal" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <iostream>
     
    struct A {
      virtual ~A() = default;
    };
     
    struct B : A {
      virtual ~B() {
        std::cout << "B destructor" << std::endl;
      }
    };
     
    int main() {
      B* b = new B;
      A & refA = *b;
      delete &refA;
      return 0;
    }
    donne :
    ????

    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <iostream>
     
    struct A {
      virtual ~A() {}
    };
     
    struct B : A {
      virtual ~B() {
        std::cout << "B destructor" << std::endl;
      }
    };
     
    int main() {
      B* b = new B;
      A & refA = *b;
      delete &refA;
      return 0;
    }
    donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ./leakTest
    B destructor
    Est-ce un bug, ou =default est sensé supprimé la virtualité ? Merci d'avance !

  2. #2
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Je dois avouer que je n'ai pas la moindre idée de l'erreur (même si ton "=defaut") doit probablement "dévirtualiser" ton destrcuteur, mais j'aimerais bien savoir ou on peut avoir la doc pour ce genre de conventions ( je n'ai jamais vu cette syntaxe "=default")... (à moins que ce soit un équivalent du "=0")


    Merci

  3. #3
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    C'est dans le titre, c'est du c++0x >< !
    Voilà le lien du draft n3000.

  4. #4
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Citation Envoyé par Lavock Voir le message
    C'est dans le titre, c'est du c++0x >< !
    Voilà le lien du draft n3000.
    J'avais compris. j'espérais simplement qu'il existait quelque-chose de plus "lisible" que les draft papers...

  5. #5
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    Il y a toujours wikipedia.

    [edit] J'ai trouvé ça aussi dans la signature de Alp !

  6. #6
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    merci.

    Je sais pas si un destructeur "default" est forcément trivial, mais si c'est le cas, il ne peut être virtuel :http://en.wikipedia.org/wiki/C%2B%2B...plain_old_data

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

Discussions similaires

  1. Réponses: 25
    Dernier message: 04/12/2004, 12h06
  2. mémoire virtuelle minimale insuffisante
    Par sempire dans le forum Windows XP
    Réponses: 16
    Dernier message: 15/10/2003, 17h29
  3. [Turbo Pascal] Limite de la mémoire virtuelle
    Par moon tiger dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 08/02/2003, 22h30
  4. Existe-t-il un langage de prog "virtuel" en Français
    Par HRS dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 10/06/2002, 18h11
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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