#include <iostream>
using namespace std;

class Cents
{
private:
    int m_cents;

public:
    Cents(int cents=0) { m_cents = cents; }
    int getCents() const { return m_cents; }
    int& getCents() { return m_cents; }
    
    friend bool operator == (const Cents &c1, const Cents &c2) // !=도 가능
    {
        return c1.m_cents == c2.m_cents;
    }
    
    friend std::ostream& operator << (std::ostream &out, const Cents &cents)
    {
        out << cents.m_cents;
        return out;
    }
    
};

int main()
{
    Cents cents1(6);
    Cents cents2(0);
    
    if (cents1 == cents2)
        cout << "Equal" << "\n";
    
    return 0;

}

sorting에서 활용

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class Cents
{
private:
    int m_cents;

public:
    Cents(int cents=0) { m_cents = cents; }
    int getCents() const { return m_cents; }
    int& getCents() { return m_cents; }
    
    friend bool operator < (const Cents &c1, const Cents &c2) // sort 기본이 오름차순이므로 <를 정의해줘야함
    {
        return c1.m_cents < c2.m_cents;
    }
    
    friend std::ostream& operator << (std::ostream &out, const Cents &cents)
    {
        out << cents.m_cents;
        return out;
    }
    
};

int main()
{
    vector<Cents> arr(20);
    for (unsigned i = 0; i<20;++i)
        arr[i].getCents() = i;
    std::random_shuffle(begin(arr),end(arr));
    for (auto &e : arr)
        cout << e << " ";
    cout << "\n";
    
    std::sort(begin(arr), end(arr)); // Cents들끼리 크기비교가 가능해야함. 크기 비교 연산자를 오버로딩을 해줘야함.
    
    // C++ 17에서는 std::random_shuffle이 폐기.
    // #include <random>
    // std::random_device rd;
    // std::mt19937 g(rd());
    // std::shuffle(arr.begin(), arr.end(), g); 처럼 쓸 수 있음.
    
    
    return 0;

}