title: When is a C++ destructor called?
body: <p>Basic Question: when does a program call a class' destructor method in C++? I have been told that it is called whenever an object goes out of scope or is subjected to a <code>delete</code></p>
  
  <p>More specific questions:</p>
  
  <p>1) If the object is created via a pointer and that pointer is later deleted or given a new address to point to, does the object that it was pointing to call its destructor (assuming nothing else is pointing to it)?</p>
  
  <p>2) Following up on question 1, what defines when an object goes out of scope (not regarding to when an object leaves a given {block}). So, in other words, when is a destructor called on an object in a linked list?</p>
  
  <p>3) Would you ever want to call a destructor manually?</p>