Таблица виртуальных методов

Оглавление1 Таблица виртуальных методов1.1 Основы виртуальных функций1.2 Реализация виртуальных функций1.3 Эффективность виртуальных функций1.4 Альтернативы виртуальным функциям1.5 Инструменты для анализа виртуальных […]

Таблица виртуальных методов

  • Основы виртуальных функций

    • Виртуальные функции позволяют переопределять поведение методов в производных классах. 
    • Виртуальные функции используются для полиморфизма и динамической диспетчеризации. 
    • Виртуальные функции могут быть реализованы с помощью таблиц виртуальных методов или виртуальных таблиц. 
  • Реализация виртуальных функций

    • В C++ виртуальные функции реализуются с помощью виртуальных таблиц, которые содержат указатели на функции. 
    • Виртуальные таблицы содержат указатели на функции, которые могут быть переопределены в производных классах. 
    • Указатели на функции в виртуальных таблицах могут быть исправлены для получения правильного адреса функции. 
  • Эффективность виртуальных функций

    • Виртуальные вызовы медленнее невиртуальных вызовов из-за дополнительных операций. 
    • Эксперименты показали, что виртуальные функции могут занимать до 50% времени выполнения. 
    • Современные процессоры могут улучшить производительность виртуальных функций благодаря большему кэшу и лучшему предсказанию ветвлений. 
  • Альтернативы виртуальным функциям

    • Существуют альтернативы, такие как бинарная отправка, которые могут быть более эффективными в некоторых случаях. 
    • Таблицы виртуальных методов ограничены известным набором методов и могут быть оптимизированы для размещения в массиве. 
  • Инструменты для анализа виртуальных функций

    • Существуют инструменты, такие как -fdump-class-hierarchy, для вывода таблиц виртуальных методов. 
  • Рекомендации

    • Эллис и Страуструп рекомендуют использовать виртуальные функции для полиморфизма и динамической диспетчеризации. 

Полный текст статьи:

Таблица виртуальных методов — Википедия

Оставьте комментарий

Прокрутить вверх