Overloading The Comparison Operators
Table of Contents

Introduction

The comparison operators are all binary operators that do not modify their operands so we can make our overloaded comparison operators friend functions.

Examples

Example 1

class Point
{
private:
    double m_dX, m_dY, m_dZ;
 
public:
    Point(double dX=0.0, double dY=0.0, double dZ=0.0)
    {
    m_dX = dX;
    m_dY = dY;
    m_dZ = dZ;
    }
 
    friend ostream& operator<< (ostream &out, Point &cPoint);
    friend istream& operator>> (istream &in, Point &cPoint);
 
    double GetX() { return m_dX; }
    double GetY() { return m_dY; }
    double GetZ() { return m_dZ; }
};
 
ostream& operator<< (ostream &out, Point &cPoint)
{
    // Since operator<< is a friend of the Point class, we can access
    // Point's members directly.
    out << "(" << cPoint.m_dX << ", " <<
        cPoint.m_dY << ", " <<
        cPoint.m_dZ << ")";
    return out;
}
 
istream& operator>> (istream &in, Point &cPoint)
{
    in >> cPoint.m_dX;
    in >> cPoint.m_dY;
    in >> cPoint.m_dZ;
    return in;
}

Example 2

class Cents
{
private:
    int m_nCents;
 
public:
    Cents(int nCents) { m_nCents = nCents; }
 
    friend bool operator> (Cents &cC1, Cents &cC2);
    friend bool operator<= (Cents &cC1, Cents &cC2);
 
    friend bool operator< (Cents &cC1, Cents &cC2);
    friend bool operator>= (Cents &cC1, Cents &cC2);
};
 
bool operator> (Cents &cC1, Cents &cC2)
{
    return cC1.m_nCents > cC2.m_nCents;
}
 
bool operator<= (Cents &cC1, Cents &cC2)
{
    return cC1.m_nCents <= cC2.m_nCents;
}
 
bool operator< (Cents &cC1, Cents &cC2)
{
    return cC1.m_nCents < cC2.m_nCents;
}
 
bool operator>= (Cents &cC1, Cents &cC2)
{
    return cC1.m_nCents >= cC2.m_nCents;
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.