title: Why should I use const T& instead of const T or T&
body: <p>I always use <code>const T&amp;</code> to pass a class to a function. Like this:</p>
  
  <pre><code>void foo(const MyType&amp; p)
  {
    //...
  }
  </code></pre>
  
  <p>But now I'm confused, why not pass a <code>const T</code> or a <code>T&amp;</code> to a function?</p>
  
  <p>By the way, for built-in types, like <code>int</code>, <code>long long</code>, <code>double</code>, why <code>const T</code> is better than <code>const T&amp;</code> <del>(I remember I've read in <em>Effective C++</em>)</del></p>
  
  <p>Thanks for answering my questions.</p>