Answers

Question and Answer:

  Home  C++ Inheritance

⟩ Explain about virtual destructor?

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 Constructorn");}

~a(){printf("nBase Destructorn");}

};

class b : public a

{

public:

b(){printf("nDerived Constructorn");}

~b(){printf("nDerived Destructorn");}

};

int main()

{

a* obj=new b;

delete obj;

return 0;

}

Output:

Base Constructor

Derived Constructor

Base Destructor

By Changing

~a(){printf("nBase Destructorn");}

to

virtual ~a(){printf("nBase Destructorn");}

Output:

Base Constructor

Derived Constructor

Derived Destructor

Base Destructor

 200 views

More Questions for you: