Перегрузка операторов (операций). Перегрузка бинарных (арифметических) операций. Перегрузка унарных операций и операций отношений. — КиберПедия 

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Перегрузка операторов (операций). Перегрузка бинарных (арифметических) операций. Перегрузка унарных операций и операций отношений.

2018-01-29 280
Перегрузка операторов (операций). Перегрузка бинарных (арифметических) операций. Перегрузка унарных операций и операций отношений. 0.00 из 5.00 0 оценок
Заказать работу

Перегрузка бинарных операций

C# позволяет определить значение операции (арифметической, логической, …) относительно создаваемого класса. Этот процесс называется перегрузкой операторов. Перегрузка операторов расширяет функциональность класса. Например: можно перегрузить операцию «+» для класса Num_Array: это означает слияние массивов в общий, результирующий массив. Операция «+» для класса Point будет означать суммирование соответствующий координат двух точек. Операция «+» для класса Stack будет означать слияние стеков, то есть получение общего, результирующего стека.

Перегрузку оператора расценивают как введение новой операции для класса, если она имеет смысл. Тогда можно оперировать объектами (составлять выражения над объектами), используя обычный синтаксис выражений. Более того, в выражениях можно использовать объекты и другие типы данных (например: Point и int), но для этого нужно перегрузить ещё раз соответствующую операцию. Перегрузка операторов – одно из самых мощных средств языка C#. Перегрузка операторов тесно связана с перегрузкой методов, то есть они похожи.

Для перегрузки операторов используется ключевое слово operator, позволяющее создать операторный метод, который определяет действие оператора, связанное с его классом.

Существует две формы операторных методов: для бинарных операций и для унарных операций.

Общий формат перегрузки бинарного оператора:

public static Тип_возврата operator знак_операции(тип и имя операнда_1, тип и имя операнда_2)

{

//Операторы

}

Здесь знак_операции – это оператор “+”, “-”, “=”, “ = = ” и т.д.; операнд_1 – это левый операнд, а операнд2 – это правый операнд, например:

Ob3 = Ob1 – Ob2;

левый правый

Перегрузку оператора рассмотрим на примере класса Point:

//В классе Point:

public static Point operator + (Point Ob1, Point Ob2)

{

return new Point(Ob1.x + Ob2.x, Ob1.y + Ob2.y);

}

//В Main():

Point T1 = new Point(5, 23);

Point T2 = new Point(17, 8);

Point T3 = T1 + T2;

T3.Show();

//Выполнить!

Задание: Аналогично разработать операторный метод «-» (минус) для точек.

//В классе Point:

Public static Point operator - (Point Ob1, Point Ob2)

{

return new Point(Ob1.x - Ob2.x, Ob1.y - Ob2.y);

}

//Выполнить!

Примечание: Подавляющее большинство языков программирования (VB, Java) не поддерживают перегрузку операторов. Требования обеспечить перегрузку операторов нет и в CLS (Common Languages Specification). Если в один проект собрать модули, написанные на разных языках программирования (компонентно-ориентированное программирование), то перегрузка операторов может не работать. Выход: каждому перегруженному оператору создать аналогичный обычный метод.

//В классе Point:

Public static Point AddPoint(Point Ob1, Point Ob2)

{

return new Point(Ob1.x + Ob2.x, Ob1.y + Ob2.y);

}

Чтобы не дублировать программный код, ещё проще передавать вызовы от перегруженного оператора «+» обычному методу. Изменим операторный метод «+» в классе Point.

public static Point operator +(Point Ob1, Point Ob2)

{

return AddPoint(Ob1,Ob2);

}

//Выполнить!

Перегрузка унарных операций и операций отношений

Унарная операция означает, что в ней участвует один операнд. Примеры унарных операций: изменение значения числовой переменной на противоположную (-); инкрементирование (++) и декрементирование (--) и др.

Формат записи унарного оператора:

public static Тип_возврата operator знак_операции (тип и имя операнда)

{

// Операторы

}


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.