Пятница, 29 Марта 2024, 15:23

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Деструкторы потомков (Вызываются ли они?)
Деструкторы потомков
SanchesДата: Суббота, 06 Августа 2016, 01:38 | Сообщение # 1
участник
Сейчас нет на сайте
Доброго времени суток.
Вот есть, например, класс А.
От него унаследован В.
Есть указатель на объект класса А.
При уничтожении объекта класса В, который находится по этому указателю, вызовется ли деструктор В? Или для этого деструктор обязательно должен быть виртуальным?
FlyOfFlyДата: Суббота, 06 Августа 2016, 05:57 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Да, деструктор тоже должен быть виртуальным, но если объект Б имеет тип Б, то при удаление его, будет правильно удаляться, если А, то уже надо делать виртуальным

Сообщение отредактировал FlyOfFly - Суббота, 06 Августа 2016, 05:59
dalikivugДата: Суббота, 06 Августа 2016, 11:28 | Сообщение # 3
почетный гость
Сейчас нет на сайте
довольно просто проверить
код с тестом и его результат

ответ (упс)
деструктор A должен быть виртуальным


Сообщение отредактировал dalikivug - Суббота, 06 Августа 2016, 11:38
FlyOfFlyДата: Суббота, 06 Августа 2016, 11:35 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Цитата dalikivug ()

ответ
деструктор A и деструктор B должны быть виртуальными

А давно ли наследников делаю виртуальные функции, а родителям нет, так что только А хватит, ты просто зачем то б сделал виртуальным, а А нет
dalikivugДата: Суббота, 06 Августа 2016, 11:37 | Сообщение # 5
почетный гость
Сейчас нет на сайте
FlyOfFly, действительно, задумался, глупость сделал, поправил :D
SanchesДата: Суббота, 06 Августа 2016, 17:21 | Сообщение # 6
участник
Сейчас нет на сайте
Большое спасибо!
Форум игроделов » Программирование » C/C++ » Деструкторы потомков (Вызываются ли они?)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг