Date post: | 18-Dec-2014 |
Category: |
Education |
Upload: | bilal-ahmed |
View: | 15 times |
Download: | 0 times |
Introduction to Introduction to ProgrammingProgramming
Lecture 32Lecture 32
In Last LectureIn Last Lecture– What is operator overloading ?What is operator overloading ?– Overload operatorsOverload operators
We also saw theWe also saw the– Binary OperatorsBinary Operators– Unary OperatorsUnary Operators– Member and Non-member Member and Non-member operatorsoperators
ExampleExample
Complex operator - ( Complex c ) ;Complex operator - ( Complex c ) ;
Complex Complex :: operator - ( Complex c )Complex Complex :: operator - ( Complex c )
{{
Complex Temp ;Complex Temp ;
Temp.real = real - c.real ;Temp.real = real - c.real ;
Temp.imag = imag - c.imag ;Temp.imag = imag - c.imag ;
return Temp ;return Temp ;
}}
ExampleExample
ExampleExample
void operator -= ( Complex c ) ;void operator -= ( Complex c ) ;
void Complex :: operator -= ( Complex c )void Complex :: operator -= ( Complex c )
{{
real -= c.real ;real -= c.real ;
imag -= c.imag ;imag -= c.imag ;
}}
ExampleExample
Date operator + ( int Date operator + ( int i ) ;i ) ;
Date Date :: operator + ( int days )Date Date :: operator + ( int days ){{
Date Temp ;Date Temp ; int toHold ;int toHold ;
int daysInThisMonth = 0 ;int daysInThisMonth = 0 ; daysInThisMonth = daysInMonth ( month ) ;daysInThisMonth = daysInMonth ( month ) ; toHold = days ;toHold = days ;
ExampleExample
if ( ( day + days ) >= daysInThisMonth )if ( ( day + days ) >= daysInThisMonth ) {{ Temp.month = month + 1 ;Temp.month = month + 1 ; if ( Temp.month > 12 )if ( Temp.month > 12 ) {{ Temp.day = 1 ;Temp.day = 1 ; Temp.month = 1 ;Temp.month = 1 ; Temp.year = year + 1 ;Temp.year = year + 1 ; }}
ExampleExample
elseelse {{ toHold = day + days ;toHold = day + days ; if ( toHold > daysInThisMonth )if ( toHold > daysInThisMonth ) {{ Temp.day = toHold - daysInThisMonth ;Temp.day = toHold - daysInThisMonth ; }} Temp.year = year ;Temp.year = year ; }} }}
ExampleExample
elseelse {{ Temp.day = days + day ;Temp.day = days + day ; Temp.month = month ;Temp.month = month ; Temp.year = year ;Temp.year = year ; }} return Temp ;return Temp ;}}
ExampleExample
Unary Unary OperatorOperator
i ++i ++
i --i --
date += 1 ; date += 1 ; Same asSame asdate ++ ;date ++ ;
Date operator++ Date operator++ ( ) ;( ) ;
Unary Unary Member Member OperatorOperator
ExampleExamplevoid Date :: operator ++ ( )void Date :: operator ++ ( ){{ if ( day == daysOfMonth ( day , month , year ) )if ( day == daysOfMonth ( day , month , year ) ) {{
if ( month < 12 )if ( month < 12 ){{
day = 1 ;day = 1 ;month ++ ;month ++ ;
}}elseelse{{ day = 1 ;day = 1 ; month = 1 ;month = 1 ;
year ++ ;year ++ ; }} else else
day ++ ;day ++ ;} }
ExampleExampleDate Date :: operator + ( int days )Date Date :: operator + ( int days ){{ Date Temp ;Date Temp ;
for ( i = 1 ; i < days ; i ++ )for ( i = 1 ; i < days ; i ++ )++ ++ Temp Temp ;;
return Temp ;return Temp ;
}}
days = 5
Code Code Reuse Reuse
Comparison OperatorComparison Operator<<
>>
<=<=
>=>=
====
boolbool
bool operator > ( Date d ) bool operator > ( Date d ) ;;
ExampleExample
Date d1 , d2 ;Date d1 , d2 ;
if ( d1 > d2 )if ( d1 > d2 )
Date date ;Date date ;
date + 5 ;date + 5 ;
ExampleExample
ExampleExample
5 + date ;5 + date ;
InterfacInterfacee