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++

  1. #41
    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
    La j'avoue, comme je l'ai dit plus haut, je trouve ça carrément stupide. Le truc, c'est que la écrire =default sur la ligne de déclaration (donc dans la définition de la class, cf. illformed), cela doit être la même chose que si tu n'avais rien écris...

    Trétrés stupide donc a mon sens, mettre ~class() = default; est EXACTEMENT la même chose si tu n'avais rien mis >< !!!
    ...

    Et voilà, je viens de poster sur comp.std.c++, mais là, il y a quelque chose qui me trouble. Il est dit que la fonction ne peut-être virtuelle, mais lorsqu'on ne déclare aucun destructeur d'une classe qui hérite d'une virtuelle, celui-ci est virtuelle... En gros, il se passe quoi dans se cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class base{
    public:
    virtual ~base();
    };
    base::~base() = default;
     
    class derived : public base {
    public:
    ~derived() = default;
    };
    Illicite ou pas ? (je vais faire un doublons-excusé pour transmettre sur comp.std.c++ -_-').

  2. #42
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Arzar Voir le message
    Fiiiou, il y a eu pas mal de développement en quelques jours.

    Je retiens surtout l'intervention de Daniel Krügler (qui fait partie du comité) sur comp.std.c++

    Les détails du comportement de la syntaxe en =default ne semblent donc pas encore définitivement fixés. Wait & See
    C'est surtout ça qui est rassurant.
    Sinon, j'ai répondu un peu comme Koala. A savoir, si je dois écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct A {
    virtual ~A();
    };
    A::~A()=default;
    ben, je vais carrément être tenté d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct A {
    virtual ~A(){}
    };
    ce qui diminue un des intérêts de l'évol.
    Toujours dans la même veine, ce sera des questions en pagaille dans le forum, puisque comment expliquer que ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct A {
    ~A()=default;
    };
    c'est valide, alors que ne serait-ce que ça ne l'est pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct A {
    protected :
    ~A()=default;
    };
    Il y a certainement des détails qui m'échappent sur le rapport avec les types triviaux, mais j'avais quand même le sentiment que =default fait du destructeur un 'user-defined' destructeur avec une implémentation précisée par la norme, plus qu'un destructeur trivial. Mais le problème est certainement là. Car à l'inverse, si ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct A {
    ~A()=default;
    };
    n'est plus un type trivial car il a un destructeur 'user-defined', c'est certainement aussi un inconvénient.
    Bref, bien du courage au comité pour trouver une formulation qui satisfasse tout le monde.

  3. #43
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Lavock Voir le message
    [...]
    J'ai cru comprendre que le noeud du problème est lié à la 'trivialité' résultante. Et là, de toute façon ta classe ne le sera pas.

  4. #44
    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
    Certe, d'où ma question.
    Normalement, texto, il y a écrit que mettre =default, c'est la même chose que si les fonctions avait été déclarées et définies implicitement.
    Or, dans ce cas, le destructeur implicite EST virtuelle... C'est contradictoire, quelque soit la réponse...

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

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