Try Running the program
Code:
#include <iostream.h>
class Base
{
public:
	Base(){ cout<<"Constructor: Base"<<endl;}
	~Base(){ cout<<"Destructor : Base"<<endl;}
};

class Derived: public Base
{
public:
	Derived(){ cout<<"Constructor: Derived"<<endl;}
	~Derived(){ cout<<"Destructor : Derived"<<endl;}
};
void main()
{
	Base *Var = new Derived();
	delete Var;
}
and then add the virtual to the base class and run and see what is the difference. Which means when you override the class constructor and destructor and by default inherited and overloaded.