Aviso C26433

A função deve ser marcada com override

Diretrizes Principais do C++

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

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

Confira também

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