13.6 Why does a destructor in base class need to be declared virtual?
This question asks us why the destructor in the base class is defined as a virtual function. First look at the following code:
class Foo {public: void f ();}; class Public Foo {public: voidnew Bar ();p- >f ();
Calling P->f () calls F () in the base class because F () is not a virtual function. In order to invoke F () in a derived class, we need to define it as a virtual function in the base class.
Destructors are used to clear memory and resources, and if the destructor of the base class is not a virtual function, then when P is an object of a derived class, only the destructor of the base class is called and the destructor of the derived class cannot be called. This is why we want to define the destructor as a virtual function, and we want to make sure that the destructor of the latest derived class is called each time.
[Careercup] 13.6 virtual destructor virtual destructor