CurriculumDestructors

Destructors

A <strong>Destructor</strong> is the opposite of a Constructor. It runs automatically when an object is destroyed. Its job is to release any resources the object was managing. Defined with <code>~ClassName()</code>.

01Your First Destructor

Destructors run in REVERSE order of creation. Notice the order in the output carefully.
main.cpp
Loading...
Terminal
Waiting for execution...

02Destructor Freeing Heap Memory

If the constructor allocates heap memory, the destructor MUST free it. This is RAII in practice.
main.cpp
Loading...
Terminal
Waiting for execution...

03Destructor Ordering with Inheritance

When a derived object is destroyed, the derived destructor runs FIRST, then the base destructor.
main.cpp
Loading...
Terminal
Waiting for execution...

04Virtual Destructor (Critical)

Without a virtual destructor in the base class, deleting a derived object through a base pointer only runs the base destructor, leaking derived resources!
main.cpp
Loading...
Terminal
Waiting for execution...

05Rule of Three

If a class needs a custom Destructor, it almost certainly also needs a custom Copy Constructor and Copy Assignment Operator. Without them, two objects share the same heap memory and deleting one corrupts the other.
main.cpp
Loading...
Terminal
Waiting for execution...
← Back to Curriculum