25 / 25 / 11
Регистрация: 15.10.2013
Сообщений: 880
1

Зачем нужен virtual деструктор?

10.09.2014, 00:32. Показов 2084. Ответов 4
Метки нет (Все метки)

Зачем нужен виртуальный деструктор?
Например есть базовый абстрактный класс в длл-ке и в нем прописан виртуальный деструктор, зачем он там????
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2014, 00:32
Ответы с готовыми решениями:

Зачем нужны конструктор и деструктор класса?
вот задание: Пользовательский класс Х должен содержать необходимые элементы-данные, которые...

Зачем в конце объявления виртуальной функции ноль: virtual void show()=0 ?
Здравствуйте. Что значат строки? И есть ли в них разница? virtual void show()=0; virtual void...

Нужен ли деструктор?
Вопрос туп, но что-то переклинило, извиняйте. Делаю в Qt. class A { QList<int>* list ...

Нужен ли в программе деструктор
Объясните пожалуйста, нужен ли в программе деструктор? #include <iostream> #include <windows.h>...

4
Эксперт PHP
4780 / 3807 / 1582
Регистрация: 24.04.2014
Сообщений: 11,160
10.09.2014, 00:45 2
Цитата Сообщение от andreyananas Посмотреть сообщение
зачем он там????
чтобы был вызван деструктор производного класса.
http://ideone.com/n8sYjP
1
1886 / 1477 / 616
Регистрация: 27.07.2012
Сообщений: 4,436
10.09.2014, 00:48 3
andreyananas, для того, чтобы при удалении объекта производного класса через указатель на базовый класс был вызван правильный деструктор (деструктор производного класса)
1
Комп_Оратор)
Эксперт по математике/физике
8725 / 4472 / 600
Регистрация: 04.12.2011
Сообщений: 13,354
Записей в блоге: 16
10.09.2014, 00:56 4
Лучший ответ Сообщение было отмечено Убежденный как решение

Решение

andreyananas, класс наследник это расширение класса родителя. Если удаляется наследник при освобождении указателя на базовый, то вызывается деструктор того класса на который он в действительности указывал, то есть наследника. Иначе не удалит правильно.
C++
1
2
3
4
Base * base = new Base();
delete base;//вызовет деструктор базового
base  = new Derived();
delete base;//вызовет переопределённый виртуальный деструктор для Derived
1
25 / 25 / 11
Регистрация: 15.10.2013
Сообщений: 880
10.09.2014, 01:11  [ТС] 5
Всем спс, вроде это знал, но что то не сообразил(
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2014, 01:11
Помогаю со студенческими работами здесь

нужен ли свой деструктор
Есть класс class Vetv { public: Vetv(int a,int b, int *ves); Vetv(); virtual ~Vetv(void);...

Виртуальный деструктор, для чего нужен?
Я конечно понимаю, что Но объясните поподробнее и попонятнее для чего это нужно

Почему создается виртуальный деструктор A, а в таблице виртуальных функций лежит деструктор B
Почему я делаю виртуальным деструктор A, а в таблице виртуальных функций лежит деструктор B?

Зачем нужен конструктор?
Всем доброго дня. Ребят такая проблема объясните мне на пальцах для чего нужен конструктор в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru