title: return value of operator overloading in C++
body: <p>I have a question about the return value of operator overloading in C++. Generally, I found two cases, one is return-by-value, and one is return-by-reference. So what's the underneath rule of that? Especially at the case when you can use the operator continuously, such as <code>cout&lt;&lt;x&lt;&lt;y</code>.</p>
  
  <p>For example, when implementing a + operation "string + (string)". how would you return the return value, by ref or by val.</p>