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
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
// ...
}
};