Предупреждение C26433
Функция должна быть помечена как
override
C++ Core Guidelines
Компилятору не требуется четко определить, что виртуальная функция переопределяет ее базу. Если виртуальная спецификация override
когда-либо изменяется в иерархии классов, может привести к незначительным проблемам во время обслуживания. Он также снижает удобочитаемость и делает полиморфное поведение интерфейса менее очевидным. Если функция четко помечена как override
, компилятор может проверить согласованность интерфейса и выявить проблемы, прежде чем они манифестируются во время выполнения.
Примечания.
Это правило не применимо к деструкторам. Деструкторы имеют собственные особенности виртуальности.
Правило не помечает функции явным образом, как final
и само по себе специальное разнообразие виртуального описателя.
Предупреждения отображаются в определениях функций, а не объявлениях. Это может быть запутано, так как определения не имеют виртуальных описателей, но предупреждение по-прежнему правильно.
Имя анализа кода: OVERRIDE_EXPLICITLY
Пример: неявное переопределение
class Shape {
public:
virtual void Draw() = 0;
// ...
};
class Ellipse : public Shape {
public:
void Draw() { // C26433
//...
}
};