If I have a base class for an inheritance tree, and the destructor is declared protected, do I still need to define this method as virtual? Why if I am not going to call it from this class? If I redefine it in a subclass, can I place it as public? Will base destructor be called automatically at end of subclass destructor?