title: C++ Object Instantiation
body: <p>I'm a C programmer trying to understand C++.  Many tutorials demonstrate object instantiation using a snippet such as:</p>
  
  <pre><code>Dog* sparky = new Dog();
  </code></pre>
  
  <p>which implies that later on you'll do:</p>
  
  <pre><code>delete sparky;
  </code></pre>
  
  <p>which makes sense.  Now, in the case when dynamic memory allocation is unnecessary, is there any reason to use the above instead of</p>
  
  <pre><code>Dog sparky;
  </code></pre>
  
  <p>and let the destructor be called once sparky goes out of scope?</p>
  
  <p>Thanks!</p>