Перегрузка вопросов оператора ввода, теоретическая

При перегрузке оператора вставки (оператора <) для того, чтобы вставить объект (например, shae) в выходной поток (файл или консоль), нам пришлось реализовать его как глобальную функцию. почему это было? Может ли кто-нибудь показать мне пример прототипа для этой функции для вставки фигуры в объект ostream? Как это отличается от того, что этот оператор является членом нашего класса (например, формы)?