Destructors run when an object goes out of scope. For local objects, this happens at the closing brace of the block where they're declared. For global objects, this happens when the program ends.
If you allocate objects with Objects created in reverse order of construction get destroyed in reverse order. If Understanding this concept deeply will help you write better code. Practice with examples until the pattern becomes automatic.
Review earlier sections if anything is unclear. Building on solid foundations makes advanced topics easier.