This commit is contained in:
roma-dxunvrs
2026-09-07 23:26:20 +03:00
parent 04fc7af4f4
commit 8fda05110c
14 changed files with 356 additions and 2 deletions
@@ -0,0 +1,3 @@
- Работает с иерархией наследования
- Позволяет подставлять наследников на место их предков
- Связывание с конкретным классом - во время выполнения
@@ -0,0 +1,15 @@
Единообразная обработка с помощью общего интейрфейса различных типов данных.
## Виды:
- [[Ad-hoc (перегрузка)]]
- [[Полиморфизм подтипов]]
- [[Параметрический полиморфизм]]
## Позволяет
- Писать менее специфичный, более общий код
- Обеспечить расширяемость программ
## Динамическое связывание
- В классе хранится таблица виртуальных методов `vtable`
- При компиляции - в таблицу заносятся методы класса
- При загрузке класса - методу задается конкретный адрес
- При выполнении из таблицы берется адрес метода
- У потомков класс ссылка на метод имеет то же смещение
- При реализации интерфейса у ссылки - другое смещение