бинарного оператора +, но в приведенной выше строке кода целочисленный аргумент указывается слева. Для того чтобы разрешить выполнение такой операции сложения, придется перегрузить оператор + еще раз. В этом случае первый параметр операторного метода должен иметь тип int, а второй параметр — тип ThreeD. Таким образом, в одном варианте метода operator + () выполняется сложение объекта типа ThreeD и целого значения, а во втором — сложение целого значения и объекта типа ThreeD. Благодаря такой перегрузке оператора + (или любого другого бинарного оператора) допускается появление встроенного типа данных как с левой, так и с правой стороны данного оператора. Ниже приведен еще один вариант класса ThreeD, в котором бинарный оператор + перегружается описанным выше образом.

// Перегрузить бинарный оператор + трижды:

// один -раз — для сложения объектов класса ThreeD,

// второй раз — для сложения объекта    типа ThreeD и    целого значения    типа    int,

// а третий раз — для сложения    целого    значения типа    int и объекта    типа    ThreeD.

using System;

// Класс для хранения трехмерных координат, class ThreeD {

int х, у, z; // трехмерные координаты public ThreeD()    { х = у = z    = 0; }

public ThreeD(int i, int j,    int k)    { x = i; у =    j; z = k; }

// Перегрузить бинарный оператор + для сложения объектов класса ThreeD. public static ThreeD operator +(ThreeD opl, ThreeD op2)

{

ThreeD result = new ThreeD();

/* Сложить координаты двух точек и возвратить результат. */ result, х =''opl.x + ор2.х; result.у = opl.y + ор2.у; result.z = opl.z + op2.z;

return result;

}

// Перегрузить бинарный оператор + для сложения // объекта типа ThreeD и целого значения типа int. public static ThreeD operator +(ThreeD opl, int op2)

{

ThreeD result = new ThreeD();

result.x = opl.x + op2; result.у = opl.y + op2; result.z = opl.z + op2;

return result;

}

// Перегрузить бинарный оператор + для сложения // целого значения типа int и объекта типа ThreeD. public static ThreeD operator +(int opl, ThreeD op2)

{

ThreeD result = new ThreeD();

result.x = op2.x + opl; result.у = op2.y + opl; result.z = op2.z + opl;

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:

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату