title: Why does passing by reference involve a copy constructor?
body: <p>In Deitel C++ book ("C++11 for Programmers", p.286) , there is an example of:</p>
  
  <pre><code>class Date { ... }
  
  class Employee {
  public:
     Employee(const string &amp;, const string &amp;, const Date &amp;, const Date &amp;);
  private:
      string firstName;
      string lastName;
      const Date birthDate;
      const Date hireDate;
  }
  
  Employee::Employee( const string &amp;first, const string &amp;last, 
     const Date &amp;dateOfBirth, const Data &amp;dateOfHire)
     : firstName( first),
       lastName( last),
       birthDate(dateOfBirth),
       hireDate(dateOfHire) { };
  </code></pre>
  
  <p>The book says the member initializer such as <code>birthDate(dateOfBirth)</code> invoked <code>Date</code> class's copy constructor. I am confused as to why copy constructor? I thought the whole point of "pass by reference" is to avoid the object copy?</p>
  
  <p>If I do:</p>
  
  <pre><code>Date birth(7,24, 1959);
  Date hire(2,12, 1988);
  Employer staff("bob", "blue", birth, hire);
  </code></pre>
  
  <p>How many Date objects does the system have now, 2 or 4? (Two created at the start, two are created by copy constructor)</p>