the derived destruction will call the base destructor automatically, you don’t call the base destructor explicitly.
The virtual destructor means you can call the derived destructor from a base pointer, still the derived destructor will call the base destructor automatically.