История изменений
Исправление KivApple, (текущая версия) :
Да не нужен никакой final, девиртуализацию в этой ситуации только совсем тупой компилятор не сделает
Не совсем верно. Если мы получаем указатель/ссылку на объект из функции, чей код компилятору не известен (она в другом модуле), либо это глобальная переменная, то объект всегда может оказаться не того класса (порождённый от нашего) с другими виртуальными методами. Так что в этом случае иного выхода, как обращаться к методам через vtable нет. А вот использование final позволяет компилятору предположить, что этот объект не может быть другого класса, откуда бы он не взялся.
Исходная версия KivApple, :
Да не нужен никакой final, девиртуализацию в этой ситуации только совсем тупой компилятор не сделает
Не совсем верно. Если мы получаем указатель/ссылку на объект из функции, чей код компилятору не известен (она в другом модуле), либо это глобальная переменная, то объект всегда может оказаться не того класса (порождённый от нашего) с другими виртуальными методами. Так что в этом случае иного выхода, как обращаться к методам через vtable нет. А вот использование final позволяет предположить, что этот объект не может быть другого класса, откуда бы он не взялся.