Operator overloading in C/C++

In object-oriented programming, operator overloading — less commonly known as operator ad-hoc polymorphism — is a specific case of polymorphism, where different operators have different implementations depending on their arguments.
Operator overloading is generally defined by the language, the programmer, or both.
The program demonstrate operator overloading in C++.
The following operators have been overloaded :
1. ++ (Prefix)
2. ++ (Postfix)
3. +
4. -
5. *
6. /
7. <
8. >
9. +=
10. ==
11. != and many more :)


#include<conio.h>
#include<iostream.h>
class ope_ove
{
public:
 int data;
 void input();
 void display();
 void operator ++();
 void operator ++(int);
 ope_ove operator +(ope_ove &);
 ope_ove operator -(ope_ove &);
 ope_ove operator *(ope_ove &);
 ope_ove operator /(ope_ove &);
 void operator <(ope_ove &);
 void operator >(ope_ove &);
 void operator +=(ope_ove &);
 void operator <=(ope_ove &);
 void operator >=(ope_ove &);
 void operator !=(ope_ove &);
 void operator ==(ope_ove &);
};
void ope_ove::input()
{
 cout << "\nEnter data -> ";
 cin >> data;
}
void ope_ove::display()
{
 cout << "\n\nData is -> " << data;
}
void ope_ove::operator ++()
{
 ++data;
}
void ope_ove::operator ++(int)
{
 data++;
}
ope_ove ope_ove::operator +(ope_ove &tmp)
{
 ope_ove extra;
 extra.data = data + tmp.data;
 return extra;
}
ope_ove ope_ove::operator -(ope_ove &tmp)
{
 ope_ove extra;
 extra.data = data - tmp.data;
 return extra;
}
ope_ove ope_ove::operator *(ope_ove &tmp)
{
 ope_ove extra;
 extra.data = data * tmp.data;
 return extra;
}
ope_ove ope_ove::operator /(ope_ove &tmp)
{
 ope_ove extra;
 extra.data = data / tmp.data;
 return extra;
}
void ope_ove::operator <(ope_ove &tmp)
{
 if (data<tmp.data)
 {
  cout << " True";
 }
 else
 {
  cout << " False";
 }
}
void ope_ove::operator >(ope_ove &tmp)
{
 if (data > tmp.data)
 {
  cout << " True";
 }
 else
 {
  cout << " False";
 }
}
void ope_ove::operator +=(ope_ove &tmp)
{
 data += tmp.data;
}
void ope_ove::operator <=(ope_ove &tmp)
{
 if (data <= tmp.data)
 {
  cout << " True";
 }
 else
 {
  cout << " False";
 }
}
void ope_ove::operator >=(ope_ove &tmp)
{
 if (data >= tmp.data)
 {
  cout << " True";
 }
 else
 {
  cout << " False";
 }
}
void ope_ove::operator !=(ope_ove &tmp)
{
 if (data != tmp.data)
 {
  cout << " True";
 }
 else
 {
  cout << " False";
 }
}
void ope_ove::operator ==(ope_ove &tmp)
{
 if (data == tmp.data)
 {
  cout << " True";
 }
 else
 {
  cout << " False";
 }
}
 
int main()
{
 clrscr();
 ope_ove obj1, obj2, ans;
 obj1.input();
 obj2.input();
 
 ans = obj1*obj2;
 ans.display();
 ans = obj1 + obj2;
 ans.display();
 ans = obj1 - obj2;
 ans.display();
 ans = obj1 / obj2;
 ans.display();
 
 getch();
 return 0;
}
 

Post a Comment