C26443 NO_EXPLICIT_DTOR_OVERRIDEC26443 NO_EXPLICIT_DTOR_OVERRIDE

« Substitution de destructeur ne doit pas utilisez explicite 'substitution' ou 'virtual' spécificateurs ».“Overriding destructor should not use explicit 'override' or 'virtual' specifiers.”

Instructions C++ Core :C++ Core Guidelines:

C.128 : Les fonctions virtuelles doivent spécifier un seul finale ou virtuelle, override,.C.128: Virtual functions should specify exactly one of virtual, override, or final.

Les destructeurs sont des méthodes généralement très spécifiques.Destructors are generally very specific methods. Cette règle peut être discutable mais consensus actuel sur les directives de base consiste à exclure les destructeurs de la recommandation de substituer explicitement.This rule may be debatable but current consensus on the Core Guidelines is to exclude destructors from the ‘override explicitly’ recommendation.

NotesNotes

  • La règle signale les destructeurs de substitution qu’explicitement utiliser 'virtual' ou 'override' spécificateurs.The rule flags overriding destructors that explicitly use ‘virtual’ or ‘override’ specifiers.
  • Les destructeurs peuvent toujours utiliser le spécificateur 'final' en raison d’une sémantique spéciale.Destructors can still use the ‘final’ specifier due to its special semantics.
  • Avertissements s’affichent dans les définitions de méthode, pas les déclarations.Warnings show up on method definitions, not declarations. Cela peut prêter à confusion, car les définitions n’ont pas les spécificateurs virtuels, mais l’avertissement est toujours légitimes.This may be confusing since definitions do not have virtual specifiers, but the warning is still legit.

Exemple : Explicite 'override'Example: Explicit ‘override’

class Transaction {
public:
    virtual ~Transaction();
    // ...
};

class DistributedTransaction : public Transaction {
public:
    ~DistributedTransaction() override { // C26443
        // ...
    }
};

Voir aussiSee Also

C.128 : Les fonctions virtuelles doivent spécifier exactement un des virtuel, override, ou finalC.128: Virtual functions should specify exactly one of virtual, override, or final