Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
cppNewbie
0 / 0 / 0
Регистрация: 05.07.2010
Сообщений: 1
#1

Вопрос новичка про виртуальный деструктор - C++

08.07.2010, 15:23. Просмотров 950. Ответов 1
Метки нет (Все метки)

Если инициализировать указатель родительского класса адресом объекта дочернего класса и объявить в родительском классе деструктор виртуальным, то при 'разрушении' дочернего объекта через этот указатель сначала выполнится деструктор дочернего класса, а потом деструктор родителя. То, что выполняется деструктор дочернего объекта - мне понятно, потому что мы объявили деструктор родителя виртуальным. Но почему выполняется деструктор родительского класса? Есть ли этому логичное объяснение или это нужно принять как данность? Ведь при выполнении метода через указатель или ссылку родительского типа, если одноименный метод в предке объявлен виртуальным, исполняется только один метод, тот, который принадлежит дочернему объекту.

Поделитесь, пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2010, 15:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вопрос новичка про виртуальный деструктор (C++):

ООП - вопрос про деструктор - C++
#include <iostream> class oop { int a; char * name; public: oop(char *,int); ~oop(); void show();

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

виртуальный деструктор - C++
есть такой пример, у меня вопрос, почему здесь деструктор декларирован просто как деструктор, а не виртуальный (и является ли он в данном...

Виртуальный деструктор - C++
Всем привет! Объясните пожалуйста новичку в ООП, вопрос чисто теоретический поэтому код не прилагаю. Мне сказали что если я в классе...

Виртуальный деструктор на MinGW v4.9.2 - C++
не знаю как на прошлых версиях, но на этой не работает чисто виртуальный деструктор. проверялось самым обычным тестом class A{ ...

Виртуальный деструктор и уничтожение объектов - C++
Приветствую всех. вопрос наверное простой так, что не ругайтесь. столкнулся с проблемой освобождения памяти. вот пример кода: ...

1
kpoxa
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
13.07.2010, 11:53 #2
Prichina v tom, chto derived class vkluchaet v sebe vse chleni base klassa, destructor derived klassa ymeet udaljat` tolko members of derived klassa, dlja ydalenia pamjati prinadlejashei base class nado zapustit` destructor of base class (eto vipolnjaetcja avtomaticheski).
Ne smotrja na to, chto destructor of base class objavlen virtualnim i fakticheski vipolnjaetsja destructor derived classa, posle ego vipolnenia vse ravno budet zapushen destructor of base class (dlja udalenia base members).
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2010, 11:53
Привет! Вот еще темы с ответами:

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

Почему виртуальный деструктор вызывается дважды? - C++
Непонятно: #include <iostream> #include <conio.h> #include<string> using namespace std; class base { ...

Подскажите как правильно добавить виртуальный деструктор - C++
Доброго времени суток Подскажите пожалуйста, как правильно добавить виртуальный деструктор в класс Int, Double, String и что он должен...

Как правильно сохранить структуру, унаследованную от структуры, содержащую виртуальный деструктор? - C++
Здравствуйте! Имеется структура: struct Product { int mId; double mCost; int mAmount; Product() {}


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru