What is a virtual destructor? Explain the use of it - C++

What is a virtual destructor? Explain the use of it.

- If the destructor in the base class is not made virtual, then an object that might have been declared of type base class and instance of child class would simply call the base class destructor without calling the derived class destructor.
- Hence, by making the destructor in the base class virtual, we ensure that the derived class destructor gets called before the base class destructor.
class a
{
   public:
       a()
       {
          printf("\nBase Constructor\n");
       }
       ~a()
       {
          printf("\nBase Destructor\n");
       }
};
class b : public a
{
   public:
       b()
       {
          printf("\nDerived Constructor\n");
       }
       ~b()
       {
          printf("\nDerived Destructor\n");
       }
};
int main()
{
   a* obj=new b;
   delete obj;
   return 0;
}
Output:
Base Constructor
Derived Constructor
Base Destructor
- By Changing:
~a()
{
   printf("\nBase Destructor\n");
}
to
virtual ~a()
{
   printf("\nBase Destructor\n");
}
Output :
Base Constructor
Derived Constructor
Derived Destructor
Base Destructor
How should a contructor handle a failure?
How should a contructor handle a failure? - Constructors don't have a return type, so it's not possible to use return codes....
What are shallow and deep copy?
What are shallow and deep copy? - A shallow copy just copies the values of the data as they are. Even if there is a pointer that points..
What is virtual constructors/destructors?
What is virtual constructors/destructors? - The explicit destroying of object with the use of delete operator to a base class pointer to the object...
Post your comment