Facebook Page Twitter Page LinkedIn Page
× C++ Tutorial C++ Advanced C++ Resources


Relational operators are those operators which compares two operand, like operators (==, <, >, <=, >=) compares C++ data types. C++ allows us to specify these operators with a special meaning for a class object.

Example: Overloading relational operators

In the below example, relational operators < and > are overloaded. When it is applied with point objects, it compares its distance from origin and returns true or false based on the comparison result. For example:

  • (10, 15) > (5, 25) will compare 10² + 15² > 5² + 25² which is equivalent to 325 > 650, hence returns false.
  • (10, 15) < (12, 14) will compare 10² + 15² < 12² + 14² which is equivalent to 325 < 340, hence returns true.

Note: In this example, cmath function hypot is used to calculate distance of a point from the origin.

#include <iostream>
#include <cmath>
using namespace std;
 
class Point {
  public:
    int x, y;
    //class constructor
    Point(){}
    Point(int x, int y) {
      this->x = x;
      this->y = y;
    }     
};
//function for overloading <
string operator< (const Point p1, const Point p2) {
  float d1 = hypot(p1.x, p1.y);
  float d2 = hypot(p2.x, p2.y);
  return d1 < d2? "true" : "false";
} 
//function for overloading >
string operator> (const Point p1, const Point p2) {
  float d1 = hypot(p1.x, p1.y);
  float d2 = hypot(p2.x, p2.y);
  return d1 > d2? "true" : "false";
}   

int main () {
  Point p1(10, 15), p2(5, 25), p3(12, 14);

  cout<<"(p1 > p2) returns: "<<(p1 > p2)<<"\n";
  cout<<"(p1 < p3) returns: "<<(p1 < p3)<<"\n";
  return 0;
}

The output of the above code will be:

(p1 > p2) returns: false
(p1 < p3) returns: true

❮ C++ - Operator Overloading