Similar presentations:
Виртуальные функции
1. Объектно-ориентированное программирование
Виртуальные функции2. Доступ к обычным методам через указатели
23. Доступ к обычным методам через указатели
34. Доступ к виртуальным методам через указатели
45. Доступ к виртуальным методам через указатели
56. Позднее связывание
ptr->show();Компилятор всегда компилирует вызов функции show() из базового класса. Однако в
программе VIRT компилятор не знает, к какому классу относится содержимое ptr.
Ведь это может быть адрес объекта как класса Derv1, так и класса Derv2. Какую
именно версию draw() вызывает компилятор — тоже загадка. На самом деле
компилятор не очень понимает, что ему делать, поэтому откладывает принятие
решения до фактического запуска программы.
А когда программа уже поставлена на выполнение, когда известно, на что указывает
ptr, тогда будет запущена соответствующая версия draw. Такой подход называется
поздним связыванием или динамическим связыванием. (Выбор функций в обычном
порядке, во время компиляции, называется ранним связыванием или статическим
связыванием.)
Позднее связывание требует больше ресурсов, но дает выигрыш в возможностях и
гибкости.
6
7. Абстрактные классы и чистые виртуальные функции
78. Виртуальные функции и класс person
89. Виртуальные функции в графическом примере
910. Виртуальные функции в графическом примере
1011. Виртуальные деструкторы
1112. Виртуальные базовые классы
1213. Виртуальные базовые классы
1314. Дружественные функции как мосты между классами
1415. Дружественность и функциональная запись
1516. Дружественные классы
1617. Статические функции
Всего: 1Всего: 3
ID: 1
ID: 2
ID: 3
....... конец программы--- ....
Удаление ID 3
Удаление ID 2
Удаление ID 1
17