Aviso C26443
O destruidor de substituição não deve usar especificadores "override" nem "virtual" explícitos.
Esse aviso foi removido no Visual Studio 16.8 para refletir as alterações do C.128 nas Diretrizes Principais do C++.
Diretrizes Principais do C++
O consenso atual sobre as Diretrizes Principais é excluir os destruidores da recomendação "substituir explicitamente".
Observações
- A regra sinaliza a substituição de destruidores que usam explicitamente especificadores "virtual" ou "override".
- Os destruidores ainda podem usar o especificador "final" devido à semântica especial que ele tem.
- Avisos aparecem em definições de função, não em declarações. Isso pode ser confuso, já que definições não têm especificadores virtuais, mas o aviso ainda é apropriado.
Nome da análise de código: NO_EXPLICIT_DTOR_OVERRIDE
Exemplo: "override" explícito
class Transaction {
public:
virtual ~Transaction();
// ...
};
class DistributedTransaction : public Transaction {
public:
~DistributedTransaction() override { // C26443
// ...
}
};