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
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.