Daily bit(e) C++ #111, спецификатор переопределения C++11
Спецификатор переопределения (C++11) обозначает виртуальный метод, предназначенный для переопределения.
Если компилятор не находит соответствующий виртуальный метод в одном из базовых классов, он будет рассматривать спецификатор переопределения как ошибку.
Следуйте этому правилу (см. C.128 в Основных правилах):
- при введении нового виртуального метода используйте только ключевое слово virtual
- при переопределении существующего метода используйте только спецификатор переопределения
struct Base { virtual void method() {} }; struct Derived : Base { // OK, matching virtual method in the Base void method() override {} // Will not compile, cv-qual does not match void method() const override {} // OK, introducing a new method virtual void another() {} // Will not compile, accidentally introducing a new method void yet_another() override {} };