@ atul anand: Because Prem Krishna Chettri's question was for main function that was as below:
int main() { baseClass *aPtr = new derivedClass1(); baseClass *bPtr = new derivedClass2(); delete aPtr; delete bPtr; } Here, there are two derived objects aPtr and bPtr, so the base class destructor is called twice here. On Thu, Dec 8, 2011 at 4:57 PM, ashok dhakar <dhakar.as...@gmail.com> wrote: > class baseClass { public : ~baseClass() { cout<< "baseClass Des > called"<< endl; } }; > .... > int main() > { > baseClass *bPtr = new derivedClass2(); > delete bPtr; > } > This will print :"baseClass Des called" > Reason: > The baseClass is a simple class there is no virtual destructor for > it,so whenever we create the object of classes derived from baseClass > there will be memory leak for the Derived Object. > There is no way for the compiler to interpret differently the > destructor function..so it calls baseClass destructor functions only. > If we make it virtual Destructor then this will be determined at run > time through the v-table based on its object type and derived > destructor will be executed 1st then base destructor. > > > In the below case: > /*Derived class*/ > class derivedClass1 : public baseClass { > public: > virtual ~derivedClass1() {cout <<"derivedClass1 Des called"<< > endl;} > > }; > class derivedClassOf1 : public derivedClass1{ > public: > virtual ~derivedClassOf1() {cout <<"derivedClassOf1 Des called"<< > endl;} > }; > > Now derivedClass1 has virtual destructor so all the derived objects > of this class will not have any memory leak provided if > derivedClass1 *pdC1=new derivedClassOf1 (); > delete pdC1; > This will 1st call derivedClassOf1,then derivedClass1 and also the > base class(remember deletion via derived pointer will make sure the > base destructor will be called,virtual was added to solve the problem > of memory leak while deletion from base pointers) > > > baseClass *p=new derivedClassOf1 (); > This will have memory leak as it will call only the base class > destructor. > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to algogeeks@googlegroups.com. > To unsubscribe from this group, send email to > algogeeks+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > > -- Thanks, Amit Kumar Basak -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.