Partager via


Avertissement C26443

Le destructeur de substitution ne doit pas utiliser de spécificateurs explicites « override » ou « virtual ».

Cet avertissement a été supprimé dans Visual Studio 16.8 pour refléter les modifications apportées à C.128 dans les instructions de base C++.

C++ Core Guidelines

C.128 : Les fonctions virtuelles doivent spécifier exactement l’une des fonctions virtuelles, remplacées ou finales.

Le consensus actuel sur les lignes directrices principales consiste à exclure les destructeurs de la recommandation « remplacer explicitement ».

Notes

  • Les indicateurs de règle substituent les destructeurs qui utilisent explicitement des spécificateurs « virtual » ou « override ».
  • Les destructeurs peuvent toujours utiliser le spécificateur « final » en raison de sa sémantique spéciale.
  • Les avertissements s’affichent sur les définitions de fonction, et non sur les déclarations. Il peut être confus, car les définitions n’ont pas de spécificateurs virtuels, mais l’avertissement est toujours approprié.

Nom de l’analyse du code : NO_EXPLICIT_DTOR_OVERRIDE

Exemple : « override » explicite

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

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

Voir aussi

C.128 : Les fonctions virtuelles doivent spécifier exactement l’une des fonctions virtuelles, remplacées ou finales