// Класс для хранения трехмерных координат, class ThreeD {
int х, у, z; // трехмерные координаты
{
ThreeD result = new ThreeD () ;
/* Сложить координаты двух точек и возвратить результат. */ result.х = opl.x + ор2.х;
result.у = opl.у + ор2.у;
result.z = opl.z + op2.z;
return result;
}
// Перегрузить бинарный оператор + для сложения // объекта типа ThreeD и целого значения типа int. public static ThreeD operator +(ThreeD opl, int op2)
{
ThreeD result = new ThreeD();
return result;
}
// Вывести координаты X, Y, Z. public void Show()
{
Console.WriteLine(x + ', ' + у + ', ' + z);
¦ }
}
class ThreeDDemo { static void Main() {
ThreeD a = new ThreeD(1, 2, 3);
ThreeD b = new ThreeD(10, 10, 10);
ThreeD с = new ThreeD();
Console.Write('Координаты точки a: ');
a.Show();
Console.WriteLine();
Console.Write('Координаты точки b: ');
b.Show ();
Console.WriteLine();
с = a + b; // сложить объекты класса ThreeD Console.Write('Результат сложения a + b: ');
c.Show();
Console.WriteLine();
Console.Write('Результат сложения b + 10: '); с.Show();
}
}
При Быполнении этого кода получается следующий результат.
Координаты точки а: 1, 2, 3
Координаты точки Ь: 10, 10, 10 Результат сложения а+Ь: 11, 12, 13
Результат сложения b + 10: 20, 20, 20
Как подтверждает приведенный выше результат, когда оператор + применяется к двум объектам класса ThreeD, то складываются их координаты. А когда он применяется к объекту типа ThreeD и целому значению, то координаты этого объекта увеличиваются на заданное целое значение.
Продемонстрированная выше перегрузка оператора +, безусловно, расширяет полезные функции класса ThreeD, тем не менее, она делает это не до конца. И вот почему. Метод operator + (ThreeD, int) позволяет выполнять операции, подобные следующей.
оЫ = оЬ2 + 10;
Но, к сожалению, он не позволяет выполнять операции, аналогичные следующей.
оЫ = 10 + оЬ2;
Дело в том, что второй целочисленный аргумент данного метода обозначает правый операнд
