title: Operator Overloading Return Type
body: <p>Here is a simple Code :</p>
  
  <pre><code>Iterator&amp; operator=(const Iterator&amp; other)
  {
       node_ = other.node_;
       return(*this); // This clearly is a value
    }
  </code></pre>
  
  <p>In this we promise that the function will return a reference to an Iterator Data Type.</p>
  
  <p><strong>But we are returning a value</strong>...How Is This Working.....??</p>
  
  <p>Seen this in many examples:</p>
  
  <pre><code>T&amp; operator[] (unsigned int index)
  {
      if (index &gt;= numEle)
          return ptr[0]; // This clearly is a value
      else
          return ptr[index];
  }
  </code></pre>
  
  <p>Its a very naive doubt, but cant really understand how this works.....</p>