Re[4]: А когда может не вызываться деструктор?
От: jazzer Россия Skype: enerjazzer
Дата: 25.01.13 14:03
Оценка: +1
Здравствуйте, rg45, Вы писали:

A>>

A>>В языке программирования C++ деструктор полиморфного базового класса должен объявляться виртуальным.
A>>Только так обеспечивается корректное разрушение объекта производного класса через указатель на соответствующий базовый класс.


A>>это же чушь.


R>Это высказывание является прямым следствием из 5.3.5/3.


struct A { virtual f(); ~A(); };
struct B:A { f(); };

int main()
{
  B b;
  A* pa = &b;
  pa->f(); //полиморфный!
}

Здесь В замечательно обходится без виртуального деструктора и все корректно уничтожается, а 5.3.5/3 идет по градиенту.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.