title: Why are references to const necessary to avoid copying parameters
body: <p>According to <a href="http://en.wikipedia.org/wiki/Reference_%28C++%29" rel="nofollow">Wikipedia</a>, function calls don't copy parameters which are are <code>references</code> to a <code>const</code> type:  </p>
  
  <pre><code>void f_slow(BigObject x);
  void f_fast(const BigObject&amp; x);
  
  f_slow(y); // slow, copies y to parameter x
  f_fast(y); // fast, gives direct read-only access to y
  </code></pre>
  
  <p>Why does the reference need to be <code>const</code>? Wouldn't a non-<code>const</code> reference accomplish the same:</p>
  
  <pre><code>void f_should_be_fast(BigObject&amp; x);
  </code></pre>