История изменений
Исправление KennyMinigun, (текущая версия) :
После компиляции вся информация о типах и наследовании в объектном файле исчезает. А вот если объект создается динамически во время выполнения откуда система знает про то какие дестукторы и в какой последовательности надо вызывать?
На самом деле «знать» не надо. Код (как «клиентский» так и «провайдерский») уже написан и скомпилирован и сделает то, что надо.
Т.е. если класс декларирует деструктор (в заголовочном файле), то код, владеющий обьектом тапкого класса сгенерирует вызов деструктора. Если деструктор виртуальный, то достанет его адрес из vtable и вызовет.
Но конечно, если у тебя есть бинарка (напр. разделяемая библиотека) без публичных заголовков, без отладочных символов и прочей вспомагательной информации, то тут уже вопрос реверс инжиниринга.
Исходная версия KennyMinigun, :
После компиляции вся информация о типах и наследовании в объектном файле исчезает. А вот если объект создается динамически во время выполнения откуда система знает про то какие дестукторы и в какой последовательности надо вызывать?
На самом деле «знать» не надо. Код (как «клиентский» так и «провайдерский») уже написан и скомпилирован и сделает то, что надо.
Т.е. если обьект декларирует деструктор (в заголовочном файле), то код, владеющий таким обьектом сгенерирует вызов деструктора. Если деструктор виртуальный, то достанет его адрес из vtable и вызовет.
Но конечно, если у тебя есть бинарка (напр. разделяемая библиотека) без публичных заголовков, без отладочных символов и прочей вспомагательной информации, то тут уже вопрос реверс инжиниринга.