Объектно-ориентированное программирование на С#. Андрианова А.А - 50 стр.

UptoLike

50
специальный метод, который называется деструктором. Он вызывается
сборщиком мусора при уничтожении объекта. Деструктор в классе может
быть только один. Его имя совпадает с именем класса, предваренное
символом ‘~’. У деструктора нет возвращаемого значения и нет параметров.
Он не имеет модификаторов.
~Имя_Класса()
{
. . .
}
4.3. Перегрузка операций
При проектировании классов, характеризующих поведение
математических объектов, удобно использовать традиционные
математические знаки операций для выполнения соответствующих действий.
Например, при сложении двух матриц было бы понятней использовать
операцию "+", а не вызывать функцию Summ() (тем более, что другой
программист может назвать эту функцию иным именем). Для таких ситуаций
в С# есть очень удобное средство, называемое перегрузкой операций.
Фактически многие операции языка С# перегружены изначально. Например,
операция "/", примененная к целым числам, является операцией
целочисленного деления (25 / 10 = 2), а если хотя бы одно из чисел является
вещественным, результатом деления будет вещественное число (25.0 / 10.0 =
2.5). Операция "" также перегружена: унарный минус меняет знак
выражения на противоположный ( y = x ), а бинарный выполняет операцию
вычитания ( a = b c ).
В языке С# у программиста имеется возможность задать для
собственных типов данных свои методы обработки, закрепленные за
обозначением той или иной операции.
При перегрузке операций необязательно придерживаться стандартных
процедур выполнения операции. Например, операция "*", обозначающая
обычно умножение двух объектов исел, матриц, векторов и т.д.), может
быть перегружена методом, который вовсе не осуществляет перемножение.
Но лучше не изменять смысла перегружаемых операций.
Большинству операций языка С# соответствуют специальные
операторные функции, имеющие следующий прототип:
специальный метод, который называется деструктором. Он вызывается
сборщиком мусора при уничтожении объекта. Деструктор в классе может
быть только один. Его имя совпадает с именем класса, предваренное
символом ‘~’. У деструктора нет возвращаемого значения и нет параметров.
Он не имеет модификаторов.

     ~Имя_Класса()
     {
        .   .    .
     }

                                     4.3. Перегрузка операций

      При    проектировании     классов,     характеризующих     поведение
математических       объектов,   удобно      использовать    традиционные
математические знаки операций для выполнения соответствующих действий.
Например, при сложении двух матриц было бы понятней использовать
операцию "+", а не вызывать функцию Summ() (тем более, что другой
программист может назвать эту функцию иным именем). Для таких ситуаций
в С# есть очень удобное средство, называемое перегрузкой операций.
Фактически многие операции языка С# перегружены изначально. Например,
операция "/", примененная к целым числам, является операцией
целочисленного деления (25 / 10 = 2), а если хотя бы одно из чисел является
вещественным, результатом деления будет вещественное число (25.0 / 10.0 =
2.5). Операция "–" также перегружена: унарный минус меняет знак
выражения на противоположный ( y = –x ), а бинарный выполняет операцию
вычитания ( a = b – c ).
      В языке С# у программиста имеется возможность задать для
собственных типов данных свои методы обработки, закрепленные за
обозначением той или иной операции.
      При перегрузке операций необязательно придерживаться стандартных
процедур выполнения операции. Например, операция "*", обозначающая
обычно умножение двух объектов (чисел, матриц, векторов и т.д.), может
быть перегружена методом, который вовсе не осуществляет перемножение.
Но лучше не изменять смысла перегружаемых операций.
      Большинству операций языка С# соответствуют специальные
операторные функции, имеющие следующий прототип:


50