Shabbir ! According to your code, we are defining the destructor as virtual but what is the difference in defining a normal function as virtual and destructor as virtual. Actually we define a virtual destructor so that complete memory can be released or because of security reasons like avoiding memory leaks.... I wasn't aware it is called Destructor Overloading....