A destructor gives an object its last rites.
Destructors are used to release any resources allocated by the object. E.g.,
class Lock might lock a semaphore, and the destructor will release
that semaphore. The most common example is when the constructor uses new,
and the destructor uses delete.
Destructors are a "prepare to die" member function. They are often abbreviated
"dtor".