Catfish is right
the leak must be the super class employee. A child class it depends on the parent. It looks like the parent needs to be destroyed as well.
Hmmmm just having a look at what the article said:
Pitfall:
delete staff[i];
destroys all objects with~Employee(). The_dept strings of the Manager objects are never destroyed.
Moral: A class from which you derive must have a virtual destructor.
So is it saying that if the destructor of the child class is not virtual, then mandatory implementation of the parent destructor will occur? I.e. the destructor needs to be virtual to override the parent destructor? Surely then you need to explicitly declare them both virtual?
I think that virtual has a different meaning when applied to destructors.
I think it means: "also call the destructor of the Base class when destroying the Derived class".
Edit3: cleanup. (And you may quote me on the above anytime you need to prove I'm a moron.)