Professional Documents
Culture Documents
Lecture 31
Operator
Overloading
Today’s Lecture
– Operators
– Syntax for overloading
operators
– How to overload operators ?
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
+ - * / % ^ &
| ~ ! = < > +=
-= *= /= %= ^= &= |=
<< >> >>= <<= = = != <=
>= && | | ++ - - -> * ,
-> [ ] ( ) 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 ) ;
Example
Complex Complex :: operator + ( Complex c )
{
Complex temp ;
temp.real = real + c.real ;
temp.imag = imag + c.imag ;
return temp ;
}
Complex x , y , z ;
z=x+y;
z=x+d;
Complex Complex Double
Number Number Precision
Number
Complex operator + ( double d ) ;
z=x+y;
z=x+d;
Example
Complex Complex :: operator + ( Complex c )
{
Complex temp ;
temp.real = real + d ;
temp.imag = imag ;
return temp ;
}
z=d+x;
Complex Complex
Number Double
Precision Number
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
char s [ 30 ] ;
public :
String ( )
{
strcpy ( s , "" ) ;
}