✏️ Как одно ключевое слово ускоряет код?



final — это не только запрет наследования. Это подсказка компилятору для девиртуализации. Компилятор получает гарантию, что другой реализации не будет.

🍉 До и после:

class Base {
virtual void process() = 0;
};

class Derived : public Base {
void process() override final { /* ... */ }
// ^^^^^
};


Теперь компилятор знает: Derived::process — последняя версия. При вызове через Derived* или Derived& он может девиртуализировать:

void hotPath(Derived& obj) {
obj.process(); // прямой вызов, не через vtable
}

@cppproglib

#под_капотом
Просмотры: 347
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти