Aviso C26433
A função deve ser marcada com
override
Diretrizes Principais do C++
Não é necessário que o compilador declare claramente que uma função virtual substitui sua base. Não especificar override
pode causar problemas sutis durante a manutenção se a especificação virtual sempre mudar na hierarquia de classes. Isso também reduz a legibilidade e torna o comportamento polimórfico de uma interface menos óbvio. Se uma função estiver claramente marcada como override
, o compilador poderá verificar a consistência da interface e ajudar a identificar problemas antes que eles se manifestem em tempo de execução.
Observações
Essa regra não é aplicável a destruidores. Os destruidores têm suas próprias especificidades de virtualidade.
A regra não sinaliza funções explicitamente marcadas como final
, que é uma variedade especial de especificador virtual.
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 está correto.
Nome da análise de código: OVERRIDE_EXPLICITLY
Exemplo: substituição implícita
class Shape {
public:
virtual void Draw() = 0;
// ...
};
class Ellipse : public Shape {
public:
void Draw() { // C26433
//...
}
};