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