Exactly as usefulcat points out: with modern C++, the bulk of object lifetimes should be handled with unique_ptr and/or directly on the stack, so your destructors are automatically called for you (reducing the risk of double frees or memory leaks).
unique_ptr forces you to think about your dependencies and when objects can / should be cleaned up.
unique_ptr forces you to think about your dependencies and when objects can / should be cleaned up.