
Добавил:
Вуз:
Предмет:
Файл:
Магистратура Языки программирования С,C++ / Презентация №8 Наследование, перегрузка, переопределение.pptx
X
- •Содержан
- •Класс А
- •Метод turn_on()
- •Приватные данные
- •Множественное наследование
- •Проблематика множественного наследования
- •Проблема ромбовидного наследования
- •Проблема ромбовидного наследования
- •Проблема ромбовидного наследования: Конструкторы и деструкторы
- •Интерфейс
- •Неявное приведение
- •Неявное приведение типов
- •Protecte
- •Protecte
- •Protected
- •Protecte
- •Protecte
- •Перегрузка 03
- •Пример перегрузки
- •Правила
- •Переопределение методов
- •Приме
- •Привязка вызова функции к объектам класса
- •Виртуальные
- •Виртуальные
- •Виртуальные
- •Таблица виртуальных методов
- •Виртуальное наследование
- •Абстрактный класс
- •Виртуальные методы в конструкторе и деструкторе
- •Конструкторы &
- •Виртуальные методы в конструкторе и деструкторе
- •Спасибо за внимание

Конструкторы &
Деструкторы
Конструктор
ы |
|
Конструктор класса всегда работает в предположении, что его дочерние |
|
классы еще не созданы, поэтому он не имеет права вызывать функции, |
|
определенные в них. И для виртуальной функций ему ничего не остается, |
|
как только вызвать то, что определено в нем самом. Получается, что |
|
механизм виртуальных функций тут как-бы не работает, так как таблица |
|
виртуальных функций дочернего класса еще не перекрыла текущую |
|
таблицу. |
Деструкторы |
|
Деструктор знает, что во время его вызова все дочерние классы уже разрушены и вызывать у них ничего уже нельзя, поэтому он замещает адрес таблицы виртуальных функций на адрес своей собственной таблицы и благополучно вызывает версию виртуальной функции, определенной в нем самом.
32

Виртуальные методы в конструкторе и деструкторе
33

Спасибо за внимание
-
Соседние файлы в папке Магистратура Языки программирования С,C++