№13,14. Операторные функции – члены/не члены класса
Перегрузить операторную функцию можно несколькими способами.
1. Как обычную функцию
2. Как функцию-член класса, для которого происходит перегрузка
3. Как функцию, дружественную к этому классу
Бинарный оператор-член класса вызывается объектом, стоящим слева от оператора, что может вызвать проблемы, когда нужный нам класс стоит справа от оператора, т.е.:
obj + 100 //все работает, так как в объекте obj определена операторная функция-член operator+
100 + obj //не работает, так как в классе int не ереопределен оператор +, принимающий параметром объекты нужного типа
Дружественная функция решает эту проблему, так как получает в качестве параметров и число 100 и объект obj
Недружественная функция вобще не катит, по причине отсутствия доступа к закрытым членам класса, а стало быть неудобством реализации.
Оставить комментарий
Вы должны авторизоваться чтобы оставлять комментарии.
Вы можете использовать HTML-тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>