Сигнатура переопределяющего метода должна точно соответствовать сигнатуре виртуального базового метода, который он переопределяет (хорошо, за исключением случая ковариантных возвращаемых значений, но это не относится к вашему вопросу). Эта подпись включает в себя конечный const
ness. Так что да, если базовый метод объявлен как const
, переопределяющий метод также должен быть объявлен как const
.
Если вы используете C ++ 11 или новее, вы должны пометить переопределяющий метод с помощью спецификатора override
, тогда компилятор проверит, что он фактически переопределяет виртуальный базовый метод * 1009. * совпадающая подпись , и генерирует ошибку, если не найден соответствующий базовый метод. Вы не получите эту проверку во время компиляции, если опустите спецификатор override
.