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.