Основы объектно-ориентированного программирования на языке C# book | Page 143
7.7 Полiморфiзм
Iншi оператори перевантажувати не можна, але можна певнi опе-
ратори можна обчислити за допомогою операторiв, що допускають
перевантаження. Синтаксис перевантаження операторiв такий: Пе-
ревантаження унарного оператору:
public static тип[] operator оператортип[]([ операнду] операнд[])
{
//нова реалiзацiя оператору
}
Перевантаження бiнарного оператору:
public static тип[] operator оператортип[]([ операнду1] операнд[1], тип[
операнду2] операнд[2])
{
// нова реалiзацiя оператору
}
Модифiкатори public и static обов’язковi. Замiсть [оператор] мо-
же бути будь-який оператор, який можна перевантажити.
Ознакою того, що робиться саме перевантаження оператору, слу-
жить ключове слово operator , за яким повинен розташовуватися знак
оператору, що перевантажується. У якостi операнду при переванта-
женнi унарного оператора може виступати лише об’єкт того ж класу,
що й клас, для якого ми робимо перевантаження. При перевантаже-
нi бiнарного оператору хоча б один iз двох операндiв повинен бути
того ж класу, для якого робиться це перевантаження. Слiд зазначи-
ти, що параметри можна передавати в метод для реалiзацiı̈ вiдповiд-
ноı̈ операцiı̈ лише за значенням, ref i out не слiд використовувати.
У C# операцiı̈ скороченого присвоювання автоматично виконуються
при перевантаженнi вiдповiдних бiнарних операцiй. Тобто, якщо в
класi вже перевантаженi операцiı̈ + и - , мы можемо використовувати
i += , i -= .
Розглянемо простий приклад. Нехай необхiдно працювати iз точка-
ми на площинi. Точка на площинi має двi координати (x,y) .
Визначимо бiнарну операцiю « + », що застосується до двох точок
таким чином:
(x1,y1)+(x2,y2)=(x1+x2,y1+y2);
Аналогiчно визначається бiнарна операцiя « - »:
(x1,y1)-(x2,y2)=(x1-x2,y1-y2);
Визначимо унарнi операцiı̈:
143