title: smart pointer (Android strong pointer) reference type copy
body: <p>I cannot figure out the following difference in Android framework (in C++) as</p>
  
  <pre><code>class foo {
    ... 
  }
  class child_foo : public foo {
    ...
  } 
  
  sp&lt;child_foo&gt; item = new child_foo;
  const sp&lt;foo&gt; &amp;r1 = item;
  </code></pre>
  
  <p>Then the strong count of item is 2.</p>
  
  <p>However, if it is in</p>
  
  <pre><code>sp&lt;child_foo&gt; item = new child_foo;
  const sp&lt;child_foo&gt; &amp;r1 = item;
  </code></pre>
  
  <p>Then the strong count of item is 1.</p>
  
  <p>What's the difference between them?</p>
  
  <p>I also noticed that <code>const sp&lt;foo&gt; &amp;r2 = item;</code> will invoke sp's(original typo of foo's) constructor, why?</p>
  
  <p><strong>Fix here, NOT foo's constructor but sp's (strong pointer's).</strong></p>
  
  <p>Thanks in advance!</p>