Грабли, логика и стандарт C++
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.04.04 23:18
Оценка: 3 (1) -6 :))
Здравствуйте, cppNewbie, Вы писали:

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


И что характерно человек прав. Он просто пытается мыслить логичеки. Но какая логика когда нужно просто тупо зазублить стандарт.

Но забавно не это. Забавно то, что со временем многие так привыкает к языку, что с пеной у рта будет доказывать, что именно так и надо, никаких граблей нет, и все в пордяке.

ЗЫ

Даказательством последих моих слов будет кучка оценок и негодующих ответов.
... << RSDN@Home 1.1.3 beta 2 >>

06.05.04 00:58: Ветка выделена из темы Вопрос новичка про виртуальный деструктор
Автор: cppNewbie
Дата: 30.04.04
— ПК
06.05.04 00:58: Перенесено модератором из 'C/C++' — ПК
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.