вторник, 7 мая 2013 г.

Виртуальные функции - низкоуровневый взгляд

Введение

Виртуальные функции уже давно стали неотъемлемой частью объектно-ориентированного программирования. Все учебники по С++ содержат утверждение, что C++ держится на трех китах: инкапсуляции, наследовании и полиморфизме. Каждое из этих понятий содержит тонкости, которые не описаны в учебниках по C++. Эта статья понемногу коснется каждого из них, но основное внимание будет уделено виртуальным функциям.
К сожалению, полиморфизм - эта та область, которая вызывает наибольшие трудности в освоении у начинающих. И даже успешно начав применять знания на практике – теневая сторона и особенности низкоуровневой реализации остаются скрытыми. Между тем сегодня сложно представить проект, в котором бы не использовался полиморфизм. Технология COM полностью построена на абстрактных интерфейсах. Плагины для многих популярных программ просто немыслимы без виртуальных функций.
Данная статья дает ответы на многие вопросы. Понимание низкоуровневых основ позволяет отбросить мишуру определений и многочисленные параграфы стандарта языка. Я хочу поблагодарить всех читателей, которые сообщили о неточностях в предыдущей редакции статьи. Особая благодарность участникам форума RSDN за конструктивные замечания и предложения по улучшению материала. Всем огромное спасибо!