Переопределение виртуальных функций и скрытие отличаются по принципу выбора при вызове функций. 23
Переопределение позволяет вызывать переопределённую функцию в зависимости от фактического типа объекта. 3 Чтобы это произошло, в производном классе функция должна иметь тот же набор параметров и возвращаемый тип, что и в базовом классе. 1
Скрытие предполагает, что скрытый метод вызывается (или не вызывается) в зависимости от типа переменной или статически известного типа ссылки. 3 Скрытый метод вызывается только тогда, когда переменная или значение имеет тот же тип, в котором этот метод скрыт. 3
Таким образом, при переопределении функция выбирается в зависимости от динамического типа объекта, а при скрытии — в зависимости от статического типа. 23