Prepared by
Mohammed Sikander
Technical Lead
Cranes Software
Mohammed.sikander@cranessoftware.com
Operator Overloading
1. *
2. ->
3. .
4. ( )
5. &&
Mohammed Sikander cranesvarsity.com
 ++
 =
 [ ]
 <<
Mohammed Sikander cranesvarsity.com
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0)
{
feet = ft ; inch = in;
}
Distance operator ++( )
{
…..
}
};
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1(2 , 6);
2. ++d1;
3. d1++;
}
Is it post Increment / pre Increment
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0){
feet = ft ; inch = in;
}
Distance operator ++(int )
{
…..
}
};
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1(2 , 6);
2. ++d1;
3. d1++;
}
Is it post Increment / pre
Increment
class Distance{
private : int feet , inch;
public :
Distance(int ft = 0 , int in = 0)
{
feet = ft ; inch = in;
}
void operator ++( )
{
++feet;
}
void print( )
{
cout <<feet<<“’”<<inch<<“”” <<endl;
}
};
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1(2 , 6)
2. Distance d2;
3. ++d1;
4. d2 = ++d1;
5. d1.print( );
6. d2.print( );
}
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0)
{
feet = ft ; inch = in;
}
Distance operator ++( )
{
++feet;
return *this;
}
void print( )
{
cout <<feet<<“’”<<inch<<“”” <<endl;
}
};
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1(2 , 6)
2. Distance d2;
3. d2 = ++d1;
4. d1.print( );
5. d2.print( );
}
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0)
{
feet = ft ; inch = in;
}
Distance operator ++( int )
{
feet++;
return *this;
}
void print( )
{
cout <<feet<<“’”<<inch<<“”” <<endl;
}
};
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1(2 , 6) ,d2;
2. d2 = d1++;
3. d1.print( );
4. d2.print( );
}
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0)
{
feet = ft ; inch = in;
}
Distance operator ++(int )
{
Distance temp = *this;
feet++;
return temp;
}
void print( )
{
cout <<feet<<“’”<<inch<<“”” <<endl;
}
};
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1(2 , 6) ,d2;
2. d2 = d1++;
3. d1.print( );
4. d2.print( );
}
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0)
{
feet = ft ; inch = in;
}
Distance operator ++( )
{ cout <<“Pre Increment n”;
……
}
Distance operator ++(int )
{ cout <<“Post Increment n”;
……
}
};
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1(2 , 6) ,d2;
2. d2 = ++d1++;
}
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0)
{
feet = ft ; inch = in;
}
Distance operator ++( ){
cout <<“this = “ << this << endl;
feet++;
return *this;
}
void print( )
{
cout <<feet<<“’”<<inch<<“”” <<endl;
}
};
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1(2 , 6);
2. Distance d2;
3. cout <<&d1 << endl;
4. d2 = ++++d1;
5. d1.print( );
6. d2.print( );
}
Change the return type to
Distance & operator ++( )
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0){
feet = ft ; inch = in;
}
Distance operator +(const Distance &d)
{
………
}
};
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1 = 5;
2. Distance d2(2 , 6);
3. Distance d3;
4. d3 = d1 + 5;
5. d3 = 5 + d2;
}
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0)
{
feet = ft ; inch = in;
}
};
Distance operator +(const Distance &d1,const Distance &d2)
{
Distance temp;
return temp;
}
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1 = 5;
2. Distance d2(2 , 6);
3. Distance d3;
4. d3 = d1 + 5;
5. d3 = 5 + d2;
}
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0){
feet = ft ; inch = in;
}
};
Distance operator +(const Distance &d1,const Distance &d2)
{
Distance temp(d1.feet + d2.feet , d1.inch +d2.inch);
if(temp.inch >= 12)
{
temp.inch -= 12;
temp.feet++;
}
return temp;
}
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1 = 5;
2. Distance d2(2 , 6);
3. Distance d3;
4. d3 = d1 + 5;
5. d3 = 5 + d2;
}
class Distance{
private : int feet , inch;
public : Distance(int ft = 0 , int in = 0){
feet = ft ; inch = in;
}
friend Distance operator +(const Distance &d1,const Distance &d2);
};
Distance operator +(const Distance &d1,const Distance &d2)
{
Distance temp(d1.feet + d2.feet , d1.inch +d2.inch);
if(temp.inch >= 12)
{
temp.inch -= 12;
temp.feet++;
}
return temp;
}
Mohammed Sikander cranesvarsity.com
int main( )
{
1. Distance d1 = 5;
2. Distance d2(2 , 6);
3. Distance d3;
4. d3 = d1 + 5;
5. d3 = 5 + d2;
}

Operator overloading

  • 1.
    Prepared by Mohammed Sikander TechnicalLead Cranes Software Mohammed.sikander@cranessoftware.com Operator Overloading
  • 2.
    1. * 2. -> 3.. 4. ( ) 5. && Mohammed Sikander cranesvarsity.com
  • 3.
     ++  = [ ]  << Mohammed Sikander cranesvarsity.com
  • 4.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0) { feet = ft ; inch = in; } Distance operator ++( ) { ….. } }; Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1(2 , 6); 2. ++d1; 3. d1++; } Is it post Increment / pre Increment
  • 5.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0){ feet = ft ; inch = in; } Distance operator ++(int ) { ….. } }; Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1(2 , 6); 2. ++d1; 3. d1++; } Is it post Increment / pre Increment
  • 6.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0) { feet = ft ; inch = in; } void operator ++( ) { ++feet; } void print( ) { cout <<feet<<“’”<<inch<<“”” <<endl; } }; Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1(2 , 6) 2. Distance d2; 3. ++d1; 4. d2 = ++d1; 5. d1.print( ); 6. d2.print( ); }
  • 7.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0) { feet = ft ; inch = in; } Distance operator ++( ) { ++feet; return *this; } void print( ) { cout <<feet<<“’”<<inch<<“”” <<endl; } }; Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1(2 , 6) 2. Distance d2; 3. d2 = ++d1; 4. d1.print( ); 5. d2.print( ); }
  • 8.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0) { feet = ft ; inch = in; } Distance operator ++( int ) { feet++; return *this; } void print( ) { cout <<feet<<“’”<<inch<<“”” <<endl; } }; Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1(2 , 6) ,d2; 2. d2 = d1++; 3. d1.print( ); 4. d2.print( ); }
  • 9.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0) { feet = ft ; inch = in; } Distance operator ++(int ) { Distance temp = *this; feet++; return temp; } void print( ) { cout <<feet<<“’”<<inch<<“”” <<endl; } }; Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1(2 , 6) ,d2; 2. d2 = d1++; 3. d1.print( ); 4. d2.print( ); }
  • 10.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0) { feet = ft ; inch = in; } Distance operator ++( ) { cout <<“Pre Increment n”; …… } Distance operator ++(int ) { cout <<“Post Increment n”; …… } }; Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1(2 , 6) ,d2; 2. d2 = ++d1++; }
  • 11.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0) { feet = ft ; inch = in; } Distance operator ++( ){ cout <<“this = “ << this << endl; feet++; return *this; } void print( ) { cout <<feet<<“’”<<inch<<“”” <<endl; } }; Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1(2 , 6); 2. Distance d2; 3. cout <<&d1 << endl; 4. d2 = ++++d1; 5. d1.print( ); 6. d2.print( ); } Change the return type to Distance & operator ++( )
  • 12.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0){ feet = ft ; inch = in; } Distance operator +(const Distance &d) { ……… } }; Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1 = 5; 2. Distance d2(2 , 6); 3. Distance d3; 4. d3 = d1 + 5; 5. d3 = 5 + d2; }
  • 13.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0) { feet = ft ; inch = in; } }; Distance operator +(const Distance &d1,const Distance &d2) { Distance temp; return temp; } Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1 = 5; 2. Distance d2(2 , 6); 3. Distance d3; 4. d3 = d1 + 5; 5. d3 = 5 + d2; }
  • 14.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0){ feet = ft ; inch = in; } }; Distance operator +(const Distance &d1,const Distance &d2) { Distance temp(d1.feet + d2.feet , d1.inch +d2.inch); if(temp.inch >= 12) { temp.inch -= 12; temp.feet++; } return temp; } Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1 = 5; 2. Distance d2(2 , 6); 3. Distance d3; 4. d3 = d1 + 5; 5. d3 = 5 + d2; }
  • 15.
    class Distance{ private :int feet , inch; public : Distance(int ft = 0 , int in = 0){ feet = ft ; inch = in; } friend Distance operator +(const Distance &d1,const Distance &d2); }; Distance operator +(const Distance &d1,const Distance &d2) { Distance temp(d1.feet + d2.feet , d1.inch +d2.inch); if(temp.inch >= 12) { temp.inch -= 12; temp.feet++; } return temp; } Mohammed Sikander cranesvarsity.com int main( ) { 1. Distance d1 = 5; 2. Distance d2(2 , 6); 3. Distance d3; 4. d3 = d1 + 5; 5. d3 = 5 + d2; }