operator overloading internal call conversion
<p>If there is a class</p>

<pre><code>class complex
   {
     private:
        float real,imag;
     public:
       complex operator +(complex c)
       {
         complex t;
         t.real=real+c.real;
         t.imag=imag+c.imag;
         return t;
       }
</code></pre>

<p>and in main if we call overloaded operator by</p>

<p>c3=c1+c2;</p>

<p>then compiler internall converts as c3=c1.operator+(c2)</p>

<p>similarly in similar example of operator overloading,chaining of =</p>

<pre><code>class circle
  {
    private:
      int radius;
      float x,y;
    public:
      circle()
      {}
      circle(int rr,float xx,float yy)
      {
        radius=rr;
        x=xx;
        y=yy;
      }
      circle&amp; operator=(const circle&amp; c)
        {
          cout&lt;&lt;endl&lt;&lt;"assignment operator invoked";  
          radius=c.radius;
          x=c.x;
          y=c.y;
          return *this;
        }
int main()
{
    circle c1 (10,2.5,2.5);
    circle c2,c3;
    c3=c2=c1;
    c1.showdata();
    c2.showdata();
    c3.showdata();
    return 0;
} 
</code></pre>

<p>Overloaded = to operator will be called 2 times first for c2=c1 and then for c3=c2.
then how will compiler treat c2=c1 with its function prototype??how will compiler internally convert this overloaded operator = call??(plz tell in reference with above addition example)
Whose private fields will b accessed and to ahich object value will be returned??</p>
