title: Implicit conversion in type declaration? What is object type that is stored on the heap?
body: <p>Ok imagine I have a base class <code>BaseClass</code>, as well as a child class <code>ChildClassA</code> which derives from <code>BaseClass</code>.</p>
  
  <p>What happens when I do this?</p>
  
  <p><code>BaseClass b = new ChildClassA;</code></p>
  
  <p>What I imagine is happening is that:</p>
  
  <ol>
  <li>ChildClassA gets created and stored on the heap <em>as a <code>ChildClassA</code> type</em>!</li>
  <li>The variable <code>b</code> gets assigned a reference to the ChildClassA</li>
  <li>There is an implicit conversion from the ChildClassA to BaseClass</li>
  <li>But the object is still stored in the heap as a ChildClassA</li>
  </ol>
  
  <p>The reason I ask is that as I understand it, once an object is declared and stored on the heap, that's what it ALWAYS is. A conversion just tells the CLR to <em>treat</em> it like it's a different type, but it really always still is the original type, and <em>knows</em> it's still the original type.</p>
  
  <p>Am I correct? Anything I am missing here?</p>