Golgappa.net | Golgappa.org | BagIndia.net | BodyIndia.Com | CabIndia.net | CarsBikes.net | CarsBikes.org | CashIndia.net | ConsumerIndia.net | CookingIndia.net | DataIndia.net | DealIndia.net | EmailIndia.net | FirstTablet.com | FirstTourist.com | ForsaleIndia.net | IndiaBody.Com | IndiaCab.net | IndiaCash.net | IndiaModel.net | KidForum.net | OfficeIndia.net | PaysIndia.com | RestaurantIndia.net | RestaurantsIndia.net | SaleForum.net | SellForum.net | SoldIndia.com | StarIndia.net | TomatoCab.com | TomatoCabs.com | TownIndia.com
Interested to Buy Any Domain ? << Click Here >> for more details...

Why would you make a destructor virtual?

Answer Posted / chandra sekhar

what chandra said is correct.but it is not 100% correct.for
that answer i want to add one point.

whenever
1)there is a pointer in the base class and we allocated
with the help of new in base class and anthoer pointer in
derived class and agin we allocated with the help of new.
2)whenever the base class object pointer points to
derived class object,and is being created using new.
i.e class base - base class
in main - base bptr;
class derived - derived class
in main - bptr = new derived();

this will be illustrated with an example given below


#include <iostream.h>
class Base
{ protected:
int *ptr;
public:
Base()
{ ptr = new int[10];
cout<<"Constructor: Base"<<endl;
}
virtual ~Base()
{
cout<<"Destructor : Base"<<endl;
delete []ptr;
}
};
class Derived: public Base
{
protected:
int *ptr1;
public:
Derived()
{
ptr1=new int[10];
cout<<"Constructor: Derived"<<endl;
}
~Derived()
{
delete []ptr1;
cout<<"Destructor : Derived"<<endl;
}
};
void main()
{
Base *Var = new Derived;
delete Var;
}

if we are not placing virtual in base class, only base
class destructor will be called because "var is of type
Base".so,
if we are not placing virtual compiler will see only "type
of the pointer,not the object which it is holding".so,if we
place virtual it will see the object it is holding.

now memory allocated for ptr,ptr1 in heap was destroyed by
destructors of the respective class.

Is This Answer Correct ?    4 Yes 0 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

How can I learn c++ easily?

1017


What is the type of this pointer in c++?

1009


When is the copy constructor called?

1086


Define what is constructor?

1003


What are libraries in c++?

1017


Is vector a class in c++?

979


. If employee B is the boss of A and C is the boss of B and D is the boss of C and E is the boss of D. Then write a program using the Database such that if an employee name is Asked to Display it also display his bosses with his name. For eg. If C is displayed it should also display D and E with C?

3232


What information can an exception contain?

1094


What is c++ manipulator?

928


Describe the setting up of my member functions to avoid overriding by the derived class?

1070


Using a smart pointer can we iterate through a container?

1022


How to give an alternate name to a namespace?

1045


Describe the advantages of operator overloading?

987


What is fflush c++?

952


What is the operator in c++?

1071