title: Free Operators versus Member Operators
body: <pre><code>class Currency
  {
  public:
      explicit Currency(unsigned int value);
      // method form of operator+=
      Currency &amp;operator +=(const Currency &amp;other); // understood!
      ...
  };
  </code></pre>
  
  <p>The following code shows an equivalent API using a free function version of the operator:</p>
  
  <pre><code>class Currency
  {
  public:
      explicit Currency(unsigned int value);
      ...
  };
  
  // free function form of operator+=
  Currency &amp;operator +=(Currency &amp;lhs, const Currency &amp;rhs); // ???
  </code></pre>
  
  <p><strong>Question1</strong>> Why should the free function return <code>Currency&amp;</code> instead of <code>Currency</code>?
  Is this a good practice?</p>
  
  <p><strong>Question2</strong>> In the implementation, which variable should be used to return, <code>lhs</code> or <code>rhs</code>?</p>