Перегрузка операций
Помимо определения собственных методов для введенных классов ООП предполагает возможность определения/переопределения стандартных операций языка в пользовательских классах. Определение необходимо, когда операция для пользовательского класса не определена – когда требуется изменить способ работы операции на данном классе.
Присвоение определено для всех типов точным побитным кодированием; если экземпляру не выделены дополнительные ресурсы, то все ок, иначе стандартное присваивание будет приводить к конфликтам.
Синтаксис:
На примере языка С++. Должна быть определена функция operator <знак оператора>. Перегрузка может выполняться как в методе, так и вообще вне класса. Синтаксическое ограничение одно – левый аргумент операции должен являться экземпляром пользовательского класса для компонент. перегрузки, иначе перегрузка реализуется вне класса. • Бинарные арифметические операции могут быть реализованы методами класса. • Присвоение может быть реализовано методами класса. • Префиксные операции вне класса. • Ввод/вывод вне класса. В зависимости от местоположения перегрузки следует обратить внимание на формирование списка параметров: для компонентов – n-1 параметр, для внешних функций – n параметров. Порядок следования параметров строгий. Методами перегружают операции, меняющие свои аргументы, а не меняющие – вне класса. Нельзя перегружать: «.», «->», «::», «sizeof», «##», «?».