Remplacer Destructeur C++

Du C++ FAQ:

[11.4] puis-je surcharge le destructeur de ma classe?
No.

Je me rends compte cela signifie que vous ne pouvez pas changer le type de retour, les arguments de type ni sur le nombre d'arguments. Je suis peut-être le fractionnement des poils sur la syntaxe des mots, mais est-il possible de remplacer du Parent destructeur?

class Child : public Parent {
public:
    virtual Parent::~Parent() {
        //New definition
    }
};

Et le faire de manière récursive?

class Grandchild : public Child {
public:
    Child::Parent::~Parent() {
        //An even newer definition
    }
};

J'ai lu cette et un related post et ça me fait penser, parce que les destructeurs ne sont pas héritées, ils ne peuvent pas être remplacés, mais je n'ai jamais vu, il est explicitement indiqué.

EDIT: j'ai changé ce afin de refléter le fait que je veux remplacer le Parent destructeur, une note de l'enfant et petit-Enfant primordial ~Parent().

La principale raison pour laquelle je fais cela est de maintenir Parent de l'interface tout en changeant la façon dont il est détruit (la raison de toute la classe enfant). Je vais avoir quelque chose d'autre la gestion de tous les Parents est créé et va appeler explicitement leurs destructeurs à un moment plus tard de mon choix.

comme vous l'avez dit, les destructeurs ne sont pas héritées. lorsque l'enfant est objet de détruire, il va appeler son propre destructeur de plus ses parents destructeurs. primordial des parents destructeur de la classe fille peu de sens.
bien sûr, les destructeurs sont héritées. Si vous ne fournissez pas un destructeur de la classe fille substitution de la mère, vous êtes en effet hériter de la classe de base destructeur. Overiding destructeurs de la société mère dans les classes dérivées fait beaucoup de sens, comme vous pouvez le voir dans certains des exemples donnés ci-dessous.
Les destructeurs sont pas hérité. Si vous ne déclarez pas un destructeur, le compilateur génère un pour vous. Classe de Base des destructeurs sont appelés automatiquement après de l'implicite destructeur s'exécute. Voir la Norme de devis dans ma réponse.
Envisager, si le destructeur d'une classe de base a été hérité par une classe dérivée, comment la dérivée de la classe de membres de la détruire?
ils sont hérités." Non, les destructeurs ne sont pas héréditaires. 12.4/3: "Si une classe n'a pas l'utilisateur déclaré destructeur, un destructeur est déclarée implicitement."

OriginalL'auteur Danny A | 2013-06-13