Daily bit(e) C++. Спецификатор override

Добавлено 22 сентября 2026 в 04:44

Daily bit(e) C++ 111, спецификатор override из C++11.

Daily bit(e) C++

Спецификатор override (появившийся в C++11) указывает на то, что виртуальный метод предназначен для переопределения метода базового класса.

Если компилятор не обнаружит соответствующего виртуального метода в одном из базовых классов, он воспримет использование спецификатора override как ошибку.

Следуйте этому правилу (смотрите пункт C.128 в Core Guidelines):

  • при объявлении нового виртуального метода используйте только ключевое слово virtual;
  • при переопределении существующего метода используйте только спецификатор override.
struct Base 
{
    virtual void method() {}
};

struct Derived : Base 
{
    // OK, соответствует виртуальному методу в Base
    void method() override {}
    // Не скомпилируется,  Will not compile, const квалификатор не совпадает
    void method() const override {}

    // OK, добавляет новый метод
    virtual void another() {}
    // Не скомпилируется,  случайное добавление нового метода
    void yet_another() override {}
};

Пример на Compiler Explorer

Теги

C++ / CppDaily bit(e) C++Программирование