/*Child is inherited from Parent*/
class Parent {
public:
Parent () //Constructor
{
cout << \"\\n Parent constructor called\\n\" <<
Just to give one example: Say you have an base class which implements reference counting. You have an addRef and a release method and you want your object to be destroyed, if (and only if) the internal counter reaches zero through a call to release.
So, first you want your destructor protected (since you only want to destroy the object from within relase).
If you plan to derive from your class, you also want to have your destructor virtual, since you need a virtual destructor whenever you want to destroy a child object through a pointer to a base class (thanks @sharptooth for the hint ...)