Relational Operators Overloading in C++

By | September 29, 2021

Relational operators are used for comparing two data objects, and by using the class operator overloading methods, we can overload a relational operator for class-based objects. There are various relational operators in C++ such as <, >, <=, >=, ==, etc. which are overloadable. This write-up will help you become familiar with relational operators overloading in C++.

Here we have overloaded two relational operators < and >. However,  you can overload other relational operators too, if you want to.

Vamware

Relational Operators Overloading in C++ Syntax

return_type operator operator_symbol(Class_name Object_name)
{
//redefining body
}

Example

#include <iostream>
#include<string.h>
using namespace std;

class Displacement
{
   private :
      int x;
      char n[20];

   public:
        Displacement(int initialize, char name[]) //constructor
           {
                x=initialize;
                strcpy(n,name);
                cout<<"you have created an object "<<n<<" which need to displace  "<< x <<" units";
                cout<<endl;
            }           
      void operator>(Displacement obj) //operator overloading for > operator
          {
               if (x>obj.x)
                {
                 cout<<"True--> object "<<n << " is greater than object "<<obj.n;
                }
               else
                {
                  cout<<"False--> object "<<obj.n << "is greater than object "<<n;
                }
                  cout<<endl;
          }

       void operator<(Displacement obj) //operator overloading for > operator
          {
               if (x<obj.x)
                {
                 cout<<"True--> object "<<n << " is Smaller than object "<<obj.n;
                }
               else
               {                                                                    
                 cout<<"False--> object "<<obj.n << " is greater than object "<<n;
               }
               cout<<endl;
          }
};

int main()
{
     Displacement d1(200,"d1"); // Displacement object
     Displacement d2(30,"d2");  // Displacement object 
     
     d1>d2;
     d1<d2;
     return 0;
}

Output

you have created an object d1 which need to displace  200 units
you have created an object d2 which need to displace  30 units
True--> object d1 is greater than object d2
False--> object d2 is greater than object d1

Behind the Code

In this above example, by using the void operator<(Displacement obj) and void operator>(Displacement obj) member functions, we have overloaded or redefined the task of < and > operators for Displacement class objects.

To Sum it Up

As you have observed, overloading relational operators is quite easy. If you have a clear understanding of relational operators and the concept of overloading, you can easily overload relational operators to your advantage.

People are also reading:

Leave a Reply

Your email address will not be published. Required fields are marked *