Operator Overloading gives special meaning to the Operator in c++.

A normal c++ Operator acts in a special way to a newly defined datatype.

The advantage of Operator overloading is to perform different operations on the same operand.

operator overloading in cpp

The syntax to declare Operator Overloading is :

 return_type operator op (argument_list)  
 {  
     // body of the function.  
 }

Return type is the type of value returned by the function.

operator is a Keyword.

op is an operator symbol that you want to overload.

Here’s an example of an Operator Overloading.

 void operator + ()
 {
     // body of the function.
 }

Some operators are not used for overload :

  1. ( . and .* ) class member access operator
  2. ( :: ) scope resolution operator
  3. ( sizeof ) sizeof operator
  4. ( ?: ) conditional operator

Also read this :- what is class and object in c++

Rules for Operator Overloading

Existing operators can only be overloaded, but the new operators cannot be overloaded.

The overloaded operator contains at least one operand of the user-defined data type.

We cannot use the friend function to overload certain operators. However, the member function can be used to overload those operators.

When unary operators are overloaded through a member function take no explicit arguments, but, if they are overloaded by a friend function, takes one argument.

When binary operators are overloaded through a member function takes one explicit argument, and if they are overloaded through a friend function takes two explicit arguments.

Example of the unary operator ‘-‘ in Operator overloading C++.

#include <iostream>
using namespace std;
class xyz
{
   int a, b, c;
   public:
    void getdata(int p, int q, int r)
    {
       a = p;
       b = q;
       c = r;
    }
    void operator - ()
    {
       a = -a;
       b = -b;
       c = -c;
    }
    void putdata()
    {
       cout<< a << ", " << b << ", " << c << endl;
    }
};
int main()
{
   xyz x1;
   x1.getdata(10, 15, 20);
   cout<<" X1 = ";
   x1.putdata();
   -x1; // calling statement
   cout<<" X1 = ";
   x1.putdata();
   return 0;
}

output

X1 = 10, 15, 20 X1 = -10, -15, -20

Example of binary operator ‘+’ in Operator overloading C++

#include<iostream>
using namespace std;
class complex
{
  public:
   float x,y;
   complex(){};
   complex(float real, float imag){
      x = real; y= imag;
   }
   complex operator+(complex);
   void display(void);
};

complex complex :: operator+(complex c)
{
   complex temp;
   temp.x = x + c.x;
   temp.y = y + c.y;
   return(temp);
}
void complex :: display(void)
{
   cout<< x <<" + "<< y << "n";
}
main(){
   complex c1,c2,c3;
   c1 = complex(2.5, 3.5);
   c2 = complex(1.6, 2.7);
   c3 = c1 + c2;
   cout<< "c1 = ";
   c1.display();
   cout<< "c2 = ";
   c2.display();
   cout<< "c3 = ";
   c3.display();
   return(0);
}

output

c1 = 2.5 + 3.5 c2 = 1.6 + 2.7 c3 = 4.1 + 6.2