C++ Tutorial Home Page

C++ Operator Overloading

What is operator overloading
Rules for overloading Operators
Operator Overloading restrictions
List of operators that cannot be overloaded.
Overloading Unary operator
Overloading increment operator(++)
Overloading decrement operator(–)
Overloading unary operator(-)
Overloading increment operator(++) postfix
Overloading decrement operator(–) postfix
Overloading increment operator (++) with friend function
Overloading increment operator (–) with friend function
Increment the time using ++
Decrement the time using ++
Overloading Binary operator(+,-,*,/,%)
Add two object using “+” operator with friend function
Overloading “-” operator
Overloading “*” operator
Overloading “/” operator
Overloading “%” operator
overloading all (+,-,*,/,%)
Overloading “+” operator with friend function
class distance (feet,inches) with “+” operator
class distance (feet,inches) with “+” operator with friend function
class distance (km,m) with “+” operator
class distance (km,m) with “+” operator with friend function
class distance (m,cm) with “+” operator
class distance (m,cm) with “+” operator with friend function
class distance (km,m,cm) with “+” operator
class distance (km,m,cm) with “+” operator with friend function
class distance (km,m,cm,mm) with “+” operator
class distance (km,m,cm,mm) with “+” operator with friend function
class time(hh,mm,ss) with “+” operator
class time(hh,mm,ss) with “+” operator with friend function
class complex(real,ing) with “+” operator
class complex(real,ing) with “+” operator with friend function
class string(str) with “+” operator
class string(str) with “+” operator with friend function
overloading “+=” operator

C++:Operator Overloading 20

Example:4
compare two objects using overloaded operator “>=“.

// to overload >= operator
//  to compare the values of two objects
#include<iostream>
#include<conio.h>
using namespace std;
class sample
{
     int a;
public:
     sample();
     sample(int n);
     void get();
     void disp();
     int operator>=(sample s);
};
sample::sample()
{
     a=0;
}
sample::sample(int n)
{
     a=n;
}
void sample::get()
{
     cout<<"Enter the value of a ";
     cin>>a;
}
void sample::disp()
{
     cout<<"a= "<<a<<endl;
}

int sample::operator>=(sample s)
{
     return(a>=s.a);
     /*
     if (a>=s.a)
     return(1);
     else
     return(0);
     */
}
int main()
{
  sample s1,s2;
  s1.get();s2.get();
  s1.disp();s2.disp();
  int t;
  t=s1>=s2;  //t=s1.operator>=(s2);
  if (t==1)
  cout<<"the object s1 is greater than or equal to object s2"<<endl;
  else
  cout<<"the object s1 is not greater than or equal to object s2"<<endl;
  getch();
  return(0);
}

Output:

Enter the value of a 47
Enter the value of a 25
a= 47
a= 25
the object s1 is greater than or equal to object s2

 

Example:5
compare two objects using overloaded operator “==“.

// to overload == operator
//  to compare the values of two objects
#include<iostream>
#include<conio.h>
using namespace std;
class sample
{
     int a;
public:
     sample();
     sample(int n);
     void get();
     void disp();
     int operator==(sample s);
};
sample::sample()
{
     a=0;
}
sample::sample(int n)
{
     a=n;
}
void sample::get()
{
     cout<<"Enter the value of a ";
     cin>>a;
}
void sample::disp()
{
     cout<<"a= "<<a<<endl;
}

int sample::operator==(sample s)
{
     return(a==s.a);
     /*
     if (a==s.a)
     return(1);
     else
     return(0);
     */
}
int main()
{
  sample s1,s2;
  s1.get();s2.get();
  s1.disp();s2.disp();
  int t;
  t=s1==s2;  //t=s1.operator==(s2);
  if (t==1)
  cout<<"the object s1 is equal to object s2"<<endl;
  else
  cout<<"the object s1 is not equal to object s2"<<endl;
  getch();
  return(0);
}

Output:

Enter the value of a 25
Enter the value of a 25
a= 25
a= 25
the object s1 is equal to object s2

 

Example:6
compare two objects using overloaded operator “!=“.

// to overload != operator
//  to compare the values of two objects
#include<iostream>
#include<conio.h>
using namespace std;
class sample
{
     int a;
public:
     sample();
     sample(int n);
     void get();
     void disp();
     int operator!=(sample s);
};
sample::sample()
{
     a=0;
}
sample::sample(int n)
{
     a=n;
}
void sample::get()
{
     cout<<"Enter the value of a ";
     cin>>a;
}
void sample::disp()
{
     cout<<"a= "<<a<<endl;
}

int sample::operator!=(sample s)
{
     return(a!=s.a);
     /*
     if (a!=s.a)
     return(1);
     else
     return(0);
     */
}
int main()
{
  sample s1,s2;
  s1.get();s2.get();
  s1.disp();s2.disp();
  int t;
  t=s1!=s2;  //t=s1.operator!=(s2);
  if (t==1)
  cout<<"the object s1 is not equal to object s2"<<endl;
  else
  cout<<"the object s1 is equal to object s2"<<endl;
  getch();
  return(0);
}

Output:

Enter the value of a 25
Enter the value of a 63
a= 25
a= 63
the object s1 is not equal to object s2