title: When to use virtual destructors?
body: <p>I have a solid understanding of most <code>OOP</code> theory but the one thing that confuses me a lot is virtual destructors.</p>
  <p>I thought that the destructor always gets called no matter what and for every object in the chain.</p>
  <p>When are you meant to make them virtual and why?</p>