operatorはわかりにくいからな。
まず、operatorは前置記法ということを知らないとダメ。
a == bは、
== (a, b)となる。

で、operator==の実装例
「外部で」定義するとこうなる。
bool operator == (const T& lhs, const T& rhs)
(lhsはleft hand side、rhsはright hand side)

ただし、メンバとして定義すると、lhsはそのメンバ自身になる。
なので、
bool operator == (const T& rhs)

operatorは戻り値や引数、一時変数などをちゃんと考えてあげなければならないので、
結構奥が深い。