virtual? sobrepor? ou ambos? C ++ [duplicado]

Esta pergunta já tem uma resposta aqui:

A palavra-chave 'substituir' é apenas uma verificação de um método virtual substituído? 5 respostas

nas últimas semanas, algo está incomodando meu cérebro sobre virtual e substituição. Aprendi que quando você herda a função virtual, é necessário adicionarvirtual para permitir que o compilador procure a função correta. Depois aprendi também que no c ++ 11 há uma nova palavra-chave - substituição. Agora estou um pouco confuso;Preciso usar palavras-chave virtuais e de substituição no meu programa ou é melhor usar apenas uma delas?

Para me explicar - exemplos de código do que quero dizer:

class Base
{
public:
    virtual void print() const = 0;
    virtual void printthat() const = 0;
    virtual void printit() const = 0;
};

class inhert : public Base
{
public:
    // only virtual keyword for overriding.
    virtual void print() const {}

    // only override keyword for overriding.
    void printthat() const override {}

    // using both virtual and override keywords for overriding.
    virtual void printit() const override {}
};

Qual é o melhor método?

questionAnswers(1)

yourAnswerToTheQuestion