+ 1

What is the working of Overloading binary operators.

1.class complex{ 2. float x; 3. float y; 4. public: 5. complex(){} 6. complex(float a, float b){ 7. x = a; y = b; 8. } 9. complex operator+(complex); 10. 11. }; 12.complex complex::operator+(complex c){ 13. complex temp; 14. temp.x=x+c.x; 15. temp.y=y+c.y; 16. return (temp); 17.} 18.int main(){ 19. complex c1,c2,c3; 20. c1=complex(2.2, 4.4); 21. c2=complex(3.3, 5.5); 22. c3=c1+c2; 23.} what happen at line 14 & 15 means what is the value of x&y that time

6th Apr 2018, 3:36 PM
ajbura
ajbura - avatar
4 Antworten
+ 2
Ignoring compile errors due to typos, c3.x is 5.5 and c3.y is 9.9 after line 22 because line 14 adds 2.2 & 3.3 together from c1 & c2 and line 15 adds their 4.4 & 5.5 together. c1+c2 can be thought of as c1.operator+(c2). Therefore, the x & y in those lines are c1.x & c1.y, while c is c2.
6th Apr 2018, 7:48 PM
John Wells
John Wells - avatar
+ 3
c1.operator+(c2) makes c1 as this in the function. x & y are this.x and this.y. The this is optional.
7th Apr 2018, 1:42 AM
John Wells
John Wells - avatar
+ 3
ok thanks.
7th Apr 2018, 1:43 AM
ajbura
ajbura - avatar
+ 2
John Wells you mean by default x & y is treated as c1.x & c1.y?
7th Apr 2018, 1:33 AM
ajbura
ajbura - avatar