The destructor for a class is called, when
- A local variable goes out of scope.
- At bottom of the loop for variables defined in the
body of the loop.
- temporary values in expression are no longer needed.
- an array of objects goes out of scope. Each item
in the array must pass.