Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
cppNewbie
Сообщений: n/a
08.07.2010, 15:23     Вопрос новичка про виртуальный деструктор #1
Если инициализировать указатель родительского класса адресом объекта дочернего класса и объявить в родительском классе деструктор виртуальным, то при 'разрушении' дочернего объекта через этот указатель сначала выполнится деструктор дочернего класса, а потом деструктор родителя. То, что выполняется деструктор дочернего объекта - мне понятно, потому что мы объявили деструктор родителя виртуальным. Но почему выполняется деструктор родительского класса? Есть ли этому логичное объяснение или это нужно принять как данность? Ведь при выполнении метода через указатель или ссылку родительского типа, если одноименный метод в предке объявлен виртуальным, исполняется только один метод, тот, который принадлежит дочернему объекту.

Поделитесь, пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2010, 15:23     Вопрос новичка про виртуальный деструктор
Посмотрите здесь:

C++ ООП - вопрос про деструктор
Виртуальный деструктор C++
почему виртуальный деструктор вызывается дважды? C++
C++ виртуальный деструктор
ВОПРОС НОВИЧКА C++
C++ Почему создается виртуальный деструктор A, а в таблице виртуальных функций лежит деструктор B
C++ Виртуальный деструктор и уничтожение объектов
C++ Виртуальный деструктор, для чего нужен?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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).
Yandex
Объявления
13.07.2010, 11:53     Вопрос новичка про виртуальный деструктор
Ответ Создать тему
Опции темы

Текущее время: 18:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru