|During destruction the
vtable of the object gets substituted. The code inside the destructor of the
outer object (derived class) may call its virtual functions—the vtable is
that of the derived class. But when the destructor of the base object is
called, the vtable of the base class is used (conceptually at least), even if
the call was made implicitly from the destructor of the derived object. You
cannot have a “framework” destructor.