## Presentation on theme: "Introduction to Programming Lecture 31. Operator Overloading."— Presentation transcript:

Introduction to Programming Lecture 31

Complex Number

complex c1, c2, x ; x = cadd ( c1, c2 ) ;

x = cadd ( cadd ( a, b ), c ) ;

Operators The complete list of C++ operators that are overloaded is as follows The complete list of C++ operators that are overloaded is as follows + - * / % ^ & | ~ ! = += -= *= /= %= ^= &= |= > >>= > >>= <<= = = != <= >= && | | ++ - - -> *, -> [ ] ( ) new new[ ] delete delete [ ]

a + b

Date.day

Example Return_type operator + (Argument_List) { // Body of function }

a * b + c ;

x = y + z ;

Example class Complex { private : double real ; double imag ; public : // member function }

Example Complex c1, c2 ; c1 = c2 ; Is equivalent to c1.real = c2.real ; c1.imag = c2.imag ;

Complex operator + ( Argument_ list ) ;

Complex Complex :: operator + ( Complex c ) { Complex temp ; temp.real = real + c.real ; temp.imag = imag + c.imag ; return temp ; } Example

Complex x, y, z ; z = x + y ;

z = x + d ; Complex Number Double Precision Number

Complex operator + ( double d ) ;

z = x + y ; z = x + d ;

Complex Complex :: operator + ( Complex c ) { Complex temp ; temp.real = real + d ; temp.imag = imag ; return temp ; } Example

z = d + x ; Complex Number Double Precision Number Complex Number

Friend Function

User Defined Data types

<<

Example main ( ) { Complex c1 ( 1, 2 ), c2 ( 3, 4 ), c3 ; c3 = c1 + c2 ; c1.display ( ) ; c2.display ( ) ; c3.display ( ) ; }

Complex operator + ( Complex & c ) ; C is a reference to a complex number

i += 2 ; i = i + 2 ;

c1 += c2 ;

Example Complex operator += ( Complex & c )

Example Complex Complex :: operator += ( Complex & c ) { real += c.real ; imag += c.imag ; }

Complex operator + ( Complex & c1, Complex & c2 ) { Complex temp ; temp.real = c1.getreal ( ) + c2.getreal ( ) ; temp.imag = c1.getimag ( ) + c2.getimag ( ) ; return temp ; } Example

Example class String { private : private : char s [ 30 ] ; char s [ 30 ] ; public : public : String ( ) String ( ) { strcpy ( s, "" ) ; strcpy ( s, "" ) ; } // Declaration (prototype) of overloaded sum operator // Declaration (prototype) of overloaded sum operator String operator + ( String c ) ; String operator + ( String c ) ; } ;

Example String String :: operator + ( String c ) { String temp ; String temp ; strcpy ( temp.s, "" ) ; strcpy ( temp.s, "" ) ; strcat ( temp.s, s ) ; strcat ( temp.s, s ) ; strcat ( temp.s, c.s ) ; strcat ( temp.s, c.s ) ; return temp ; return temp ;}