title: Operator overloading clarification
body: <p>In these c++ examples:</p>
  
  <pre><code> 1. int operator+ ( Jazz &amp;lhs,Jazz &amp;rhs );
  
   2. Jazz &amp; Jazz operator= (const Jazz &amp;);
  
   3. Jazz &amp; operator+ ( const Jazz &amp; )
  </code></pre>
  
  <p>I understand the basic concepts behind operator overloading in c++.
  What I don't know is:</p>
  
  <p>In the second example, do we need to declare and define copy constructor function before overloading <strong>operator=</strong> ?</p>
  
  <p>How to tell the difference between member and non-member operator overloading ?</p>
  
  <p>First example is non-member, but it has access to class instances, and works with them ?</p>
  
  <p>Third example in also non-member, but it is of type Jazz ?</p>
  
  <p>Can someone explain please. Thank you.</p>