Destructor Calls

In this lesson, we'll discuss how destructor calls are triggered and what sequence they follow.

Sequence followed by destructor calls #

  • When we (directly or indirectly) call a destructor, a series of destructor calls may be triggered.
  • This guarantees that each base object is properly destructed.
  • The sequence of destructor calls starts with the most derived class and ends with the base class.

Example #

In the commented portion, the destructor sequence is mentioned when delete is called:

struct A{};
struct B: A{};
struct C: B{};
C* c = new C;          // A -> B -> C
delete c;              // ~C -> ~B -> ~A

We might have noticed that constructor calls follow the exact opposite behavior of destructor calls.

Get hands-on with 1200+ tech skills courses.