C++ Interview Questions and Answers

 

What is virtual constructors/destructors?

Answer1



Virtual destructors:



If an object (with a non-virtual destructor) is destroyed explicitly by applying
the delete operator to a base-class pointer to the object, the base-class destructor
function (matching the pointer type) is called on the object.



There is a simple solution to this problem declare a virtual base-class destructor.



This makes all derived-class destructors virtual even though they don’t have the
same name as the base-class destructor. Now, if the object in the hierarchy is destroyed
explicitly by applying the delete operator to a base-class pointer to a derived-class
object, the destructor for the appropriate class is called. Virtual constructor:
Constructors cannot be virtual. Declaring a constructor as a virtual function is
a syntax error.





Answer2



Virtual destructors: If an object (with a non-virtual destructor) is destroyed explicitly
by applying the delete operator to a base-class pointer to the object, the base-class
destructor function (matching the pointer type) is called on the object.



There is a simple solution to this problem – declare a virtual base-class destructor.
This makes all derived-class destructors virtual even though they don’t have the
same name as the base-class destructor. Now, if the object in the hierarchy is destroyed
explicitly by applying the delete operator to a base-class pointer to a derived-class
object, the destructor for the appropriate class is called.

Posted by:Richards