вторник, 6 ноября 2012 г.

О полиморфизме.

Не момню источник, давно было. Но как-то возник разговор опять на тему "что такое виртуальная функция"...

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

Всякие подвиды полиморфизма:
  • Ad-hoc - функция ведет себя по разному для аргументов разных типов. Пример  - практически любая виртуальная функция.
  • Параметрический - функция ведет себя одинаково для аргументов разных типов. Пример - добавляем элемент в гетерогенный контейнер.
  • Естественный полиморфизм - информация о типе переменной приходит вместе с переменной.
  • Искуственный - информация о типе переменной приходит отдельно. Пример - printf плюсовый. 
  • Статический - типы известны во время компиляции.
  • Динамический - типы во время компиляции не известны.


Теперь что такое виртуальная функция.
Это ad-hoc полиморфная функция по одному (неявному - this) аргументу. Все.

Комментариев нет: