Exigindo substituições de função virtual para usar a palavra-chave override

C ++ 11 adicionadooverride para garantir que as funções-membro que você escreve que pretendem substituir as funções virtuais de classe base realmente o façam (ou não serão compiladas).

Mas em uma grande hierarquia de objetos, às vezes você pode acidentalmente acabar escrevendo uma função de membro que substitui uma virtual de classe base quando não a pretendia! Por exemplo:

struct A {
    virtual void foo() { }  // because obviously every class has foo().
};

struct B : A { ... };

class C : B {
private:
    void foo() {
        // was intended to be a private function local to C
        // not intended to override A::foo(), but now does
    }
};

Existe algum sinalizador / extensão do compilador que ao menos emita um avisoC::foo ? Para facilitar a leitura e a correção, eu gostaria de reforçar que todas as substituições usemoverride.

questionAnswers(4)

yourAnswerToTheQuestion