Relational Operator Overloading in C++
Relational operator overloading
Relational operator overloading in C++ is frequently used to compare many of the built-in data types in C++. We can overload relational operators like >,<,>=etc to directly manipulate the object of a class.
Relational Operator Overloading in C++
There are various relational operators supported by C++ language like (<, >, <=, >=, ==, etc.) which can be used to compare C++ built-in data types.
You can overload any of these operators, which can be used to compare the objects of a class.
Syntax:
return_type operator symbol(const ClassName& object) { // statements } // Here operator is a keyword and relational operator // symbol is the operator to be overloaded
Example:
bool operator >(const Student& stObj) { // function definition }
This surely should not change the object values. Thus, safe side we are adding const passing by address. So any value, if by mistake change gives error
Example 1
Here we are Overloading > i.e. greater than operator
To know the taller between two students.
#include <iostream> using namespace std; class Student{ int feet = 0; //can be b/w 0 & infinity int inches = 0; // can be b/w 0 & 12 public: void getHeight(int f, int i){ feet = f; inches = i; } // const and & added check explanation above(Before code) why bool operator > (const Student& s2) { if(feet > s2.feet) return true; else if(feet == s2.feet && inches > s2.inches) return true; return false; } }; int main() { Student s1,s2; s1.getHeight(5,10); s2.getHeight(6,1); if(s1 > s2) cout << "Student 1 is taller" << endl; else if(s2 > s1) cout << "Student 2 is taller" << endl; else cout << "Both have equal height" << endl; return 0; }
Output –
Student 2 is taller
Example 2
Overloading comparison Operator (==)
Here we are writing program to check if two clocks are showing the same time or not –
#include <iostream> using namespace std; class Time { int hour, mins, secs; public: Time(){ hour=0, mins=0; secs=0; } // parameterized constructor Time(int h, int m, int s) { if(h>=0 && h <=23 && m >=0 && m <=59 && s >0 && s <=59) { hour=h, mins=m; secs=s; } else cout << "Invalid time format, values would be 00:00:00 by default" << endl; } // returns true if both times are same bool operator == (const Time& t2) { return (hour == t2.hour && mins == t2.mins && secs == t2.secs); } }; int main() { Time t1(7,11,30); Time t2(3,30,41); if(t1 == t2) cout << "Clocks show same time"; else cout << "Clocks show different times"; return 0; }
Output
Clocks show different times
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others
Login/Signup to comment