Ответ 1
Окончательно используется для оптимизации в С++?
Это может быть и есть.
Как уже отмечалось, он уже используется; см. здесь и здесь, показывающий сгенерированный код для переопределить с помощью и без final
.
Оптимизация в этих строках будет относиться к "де виртуализации" виртуальных вызовов. Это не всегда сразу влияет на final
класса или метода. Хотя они предлагают помощь для определения этого, применяются обычные правила виртуальных функций и иерархии классов.
Если компилятор может определить, что во время выполнения всегда будет вызываться конкретный метод (например, с учетом примера OP с автоматическим объектом), он может применять такую оптимизацию в любом случае, независимо от того, является ли метод final
или нет.
Оптимизации подпадают под правило as-if, которые позволяют компилятору применять любое преобразование, если наблюдаемое поведение является как-бы исходный код был выполнен.