Lets examine following case
struct A{ virtual ~A(){} }; struct B : public A{ virtual ~B(){} }; struct C : public B{ virtual ~C(){} }; int main(){ A* a