• [^] # Re: Donc pour résumer...

    Posté par . En réponse à la dépêche C++17, Genèse d’une version mineure. Évalué à 2.

    Si ta classe fait partie d’une hiérarchie polymorphe, elle ne devrait pas être copiable. Sinon, tu t’assures de faire de la merde et des bugs à un moment où un autre.

    Par copiable, tu entends par l'opérateur d'affectation ou par le constructeur de copie? Ça m'est déja arrivé de faire des fonctions virtual Base * clone(const Base ) = 0; qui sont explicitées dans les classes filles en appelant le constructeur de copie par un new(this), et ça ne m'avait pas choqué.

    Si j'ai bonne mémoire, si tu essayes de faire *Base = *Derived; en appelant l'opérateur d'affectation, ça doit compiler. Il me semble avoir déja vu des contextes où ça marchait et où ça avait du sens.

    en délégant la copie de la partie concernée de ta structure

    Tu veux dire de définir une struct connue de ta classe seule qui contiendrait tous les membres copiables de la classe, ce qui permettrait de pouvoir copier tous les membres d'un coup? Ça ne fonctionne que si tu n'as pas une hiérarchie qui ajoute des membres, autrement c'est presque pire.