This might give you a start for how to define them:
#include <iostream>
#include <utility>
class Integer {
int _val;
public:
Integer(): _val(0) {}
Integer(int val): _val(val) {}
int get() const { return _val; }
Integer operator+=(const Integer& rhs) { return _val += rhs._val; }
Integer operator-=(const Integer& rhs) { return _val -= rhs._val; }
Integer operator*=(const Integer& rhs) { return _val *= rhs._val; }
Integer operator/=(const Integer& rhs) { return _val /= rhs._val; }
Integer operator%=(const Integer& rhs) { return _val %= rhs._val; }
Integer operator+(const Integer& rhs) { return _val + rhs._val; }
Integer operator-(const Integer& rhs) { return _val - rhs._val; }
Integer operator*(const Integer& rhs) { return _val * rhs._val; }
Integer operator/(const Integer& rhs) { return _val / rhs._val; }
Integer operator%(const Integer& rhs) { return _val % rhs._val; }
Integer operator++() { return *this += 1; }
Integer operator++(int) { Integer temp(*this); ++*this; return temp; }
Integer operator--() { return *this -= 1; }
Integer operator--(int) { Integer temp(*this); --*this; return temp; }
friend bool operator==(const Integer& lhs, const Integer& rhs)
{ return lhs._val == rhs._val; }
friend bool operator<(const Integer& lhs, const Integer& rhs)
{ return lhs._val < rhs._val; }
};
int main()
{
using namespace std::rel_ops; // Sneaky sneaky ;-)
Integer a(20);
// Op-assign operators
std::cout << a.get() <<'\n';
a += 2;
std::cout << a.get() <<'\n';
a -= 2;
std::cout << a.get() <<'\n';
a *= 2;
std::cout << a.get() <<'\n';
a /= 2;
std::cout << a.get() <<'\n';
a %= 2;
std::cout << a.get() <<'\n';
a = 20;
Integer c;
// Arithmetic operators
std::cout << c.get() <<'\n';
c = a + 2;
std::cout << c.get() <<'\n';
c = a - 2;
std::cout << c.get() <<'\n';
c = a * 2;
std::cout << c.get() <<'\n';
c = a / 2;
std::cout << c.get() <<'\n';
c = a % 2;
std::cout << c.get() <<'\n';
a = 20;
// Increment/decrement
std::cout << (++a).get() <<'\n';
std::cout << (a++).get() <<'\n';
std::cout << (--a).get() <<'\n';
std::cout << (a--).get() <<'\n';
a = 20;
c = 20;
// Relational operators
std::cout << (a == c) << '\n';
std::cout << (a != c) << '\n';
std::cout << (a < c) << '\n';
std::cout << (a <= c) << '\n';
std::cout << (a > c) << '\n';
std::cout << (a >= c) << '\n';
}