Этот вопрос отличается от 'Когда/почему я должен использовать виртуальный
деструктор?'.
struct B {
virtual void foo ();
~B() {} // <--- not virtual
};
struct D : B {
virtual void foo ();
~D() {}
};
B *p = new D;
delete p; // D::~D() is not called
Вопросы:
~D()
не будет вызван наверняка)?~D()
пуст. Это как-то повлияет на код?new[]
/delete[]
с B* p;
, ~D()
точно не будет
не будет вызвана, независимо от виртуальности
деструктора. Является ли это
неопределенное поведение или хорошо определенное поведение?