Partilhar via


Advertência C26443

O destruidor de substituição não deve usar especificadores explícitos de "substituição" ou "virtual".

Esse aviso foi removido no Visual Studio 16.8 para refletir as alterações no C.128 nas Diretrizes Principais do C++.

Diretrizes principais do C++

C.128: As funções virtuais devem especificar exatamente uma das funções virtual, de substituição ou final.

O atual consenso sobre as Orientações Fundamentais consiste em excluir os destruidores da recomendação de «neutralização explícita».

Observações

  • A regra sinaliza a substituição de destruidores que usam explicitamente especificadores 'virtuais' ou 'substituir'.
  • Os destruidores ainda podem usar o especificador 'final' por causa de sua semântica especial.
  • Os avisos aparecem em definições de função, não em declarações. Pode ser confuso, já que as 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: 'substituição' explícita

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

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

Ver também

C.128: As funções virtuais devem especificar exatamente uma das funções virtual, de substituição ou final