Пример. Пусть в программе имеются объявления: TPoint х(12,3), у(21,30), z( 18,30); Тогда можно записать: х +=у; y-=z; TPoint г = х + z: Общие правила переопределения операций сводятся к следующему: Двуместные операции должны иметь два параметра, одноместные - один параметр, причем, если операция объявлена как компонента класса, то неявным первым операндом является экземпляр объекта (следовательно, при определении двуместной операции будет задаваться один параметр, одноместная операция объявляется с пустым списком параметров). Если операция переопределяется вне класса (с описателем friend), то для двуместной операции должны быть заданы два параметра, для одноместной операции - один параметр. При переопределении сохраняется приоритет исходной операции, т.е. операция + будет выполняться раньше операции = и Т . д . При переопределении не наследуются свойства коммутативности и ассциативности, т.е. результат выражения х + у - 7. может отличаться от результата выражения y - z + х и зависит от того, как определены соответствующие операции. - Не допускается переопределение операций(.) (точка), (.*) ( точка -звездочка, обращение к указателю на компоненту класса или структуры), :: (разрешение контекста), а также операции # и ##, используемые при препроцессорной обработке. Нельзя использовать аргументы по умолчанию. - Переопределяемые операции = (присваивание), () (функция), [ ] (индекс), -> (обращение к компоненте класса по указателю) всегда должны быть компонентами класса и не могут быть static. - Переопределяемые операции new и delete должны быть static - компонентами класса. Литература: 1осн.., [187-195]; 9 доп., [395-398], 2осн., [197-201], [205-207J; Контрольные вопросы 1. Полиморфизм. Преобразования, определяемые классом
RkJQdWJsaXNoZXIy MTExODQxMg==