Сравнение объектов с помощью оператора bool ==

Итак, после прочтения некоторых SO вопросов и ответов я все еще не понимаю, зачем использовать

friend bool operator==( BaseClass const &left, BaseClass const &right )

вместо

bool operator==( BaseClass const &right )

сейчас у меня есть что-то вроде этогоhttp://pastebin.com/pKsTabC0 (Fixed) - и, кажется, работает нормально. Но, может быть, я что-то упустил? Какие-либо предложения?

Update 1

Хорошо, я изменил источник, чтобы он работал правильноhttp://ideone.com/fIAmB, Удалил ненужные виртуальные и добавил const. Тем не менее я не понимаю, зачем использовать друзей ...

Ответы на вопрос(4)

Ваш ответ на вопрос