Re: vptr в деструкторе
От: rg45 СССР  
Дата: 22.10.12 09:01
Оценка: 3 (1)
Здравствуйте, RSDN_new_user, Вы писали:

RSD>Доброго дня,

RSD>возник вопрос по vptr — у меня в VS2005 получается, что в деструкторе он уже не работает. Как так получается, если члены класса, разрушаются после выполнения деструктора? Он разве не является членом класса?

vptr — это способ реализации виртуальности, а не член класса. Значения vptr объектов базового и производного классов различны. Поэтому при конструировании объекта, при переходе от конструктора базового класса к конструктору производного, vptr изменяет свое значение. И при разрушении объектов тоже изменяет от деструктора к деструктору, только в обратном порядке.

А ты что, хочешь из деструктора базового класса позвать переопределенную виртуального функцию производного? Нет уж, это вам не C#, тут все строго — когда работает деструктор базового класса, объект производного уже разрушен, и нечего обращаться к мертвому объекту!
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.