Нельзя поместить спецификатор переопределения при определении функции вне спецификации члена класса. Язык не позволяет этого, и компилятор будет жаловаться. Так что на самом деле есть только один вариант.
Помимо этого, эта опция также имеет больше смысла. При объявлении функции вы выражаете намерение переопределить ее. Так что помещать override
туда в точке выражения своего намерения имеет смысл. Это то, что вы просите, чтобы компилятор проверил здесь, ваше намерение переопределить. Объявление также достаточно для проверки того, что функция изначально объявлена виртуальной, и что вы правильно подписали.