Главная » Просмотр файлов » Г. Шилдт - С# 3.0 Полное руководство. 2010

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 52

Файл №1160798 Г. Шилдт - С# 3.0 Полное руководство. 2010 (Г. Шилдт - С# 3.0 Полное руководство. 2010) 52 страницаГ. Шилдт - С# 3.0 Полное руководство. 2010 (1160798) страница 522019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 52)

*/ геви1т.х = ор1.х — ор2.х; геви1т.у = ор1.у — ор2.у) геяи1т.к = ор1.я — ор2.гт гетигп геяи1тт ) // Перегрузить унарный оператор — . рибатс ятаттс ТЬтееб орегатог †(ТЬтееО ор) ( ТЬгееО геяи1Г = пен ТЬтееО()т геяи1т.х = -ор.хт геви1т.у = ор у1 геяи1г.я = -ор.ят гетигп геви1ст ) // Перегрузить унарный оператор +т. риь11с ягагтс тьгееО оретагог ++(тнгееО ор) ( ТЬгееО геви1Г = пен ТЬгееО()т // Возвратить результат инкрементирования. геяи1г.х = ор.х + 1; геяи1т.у -" ор.у + 1т геяи1т.х = ор.я + 12 Глава 9.

Перегрузка операторов 2еы1 гесцгп геяц1Г; ) // Вывести координаты Х, у, 5. рцЬ11с чо1к( 5Лои() ( сопяо1е.иг1ге11пе (х + ", " + у + ", " + г) т ) с1аяя ТЬгееООеио ( якасас чогп Магд() ( ТЛгееО а = печ ТЬгееО(1, 2, 3)Г Тпгеер Ь = пеи Тпгеео(10, 10, 10) ТЛгееО с = пеи ТЬгееО()г Сопяо1е.Иг1ое("Координаты точки а: "); а.5Лон()т СОпзс1е.нг1Ге11пе()т Сопяо1е.нггое("Координаты точки Ь: "); Ь.

5Ьон () т сопяо1е.игагеОгпе()т с = а т Ьт // сложить координаты точек а и Ь Сопяо1е.нггае("Результат сложения а т Ь: ")т с.5Лон () ) Сопяо1е.нггсе11пе(); с = а + Ь т сг // сложить координаты точек а, Ь и с Сопяо1е.нггсе("Результат сложения а + Ь + с: "); с.зпон(); Сопяо1е.Иг1оет апе () т с = с — аг // вычесть координаты точки а сопяо1е.иг1ге("Результат вычитания с — а: ")т с.ВЬоч(); Сопяо1е.нг1ое11пе()т с = с - Ьт // вычесть координаты точки Ь Сопяо1е.нг1се("Результат вычитания с — Ь: "); с.ВЬои()т Сапяо1е.нгасе11пе(); с = -ат // присвоить точке с отрицательные // координаты точки а Сопзо1е.нггке("Результат присваивания -а: ")т с.ВЛои () г Сопяо1е.нг1Геаапе()т с = а++; // присвоить точке с координаты точки а, // а затем инкрементировать их Сопяо1е.нггкетапе("Если с = а++")г Сопяо1е.Иггсе("то координаты точки с равны "); с.

5Лою () т 262 Часть ). Языг С() Сопзо1е.нг1ое("а координаты точки а равны "); а. Епон () г // Установить исходные координаты (1,2,3) точки а а пен ТЬгееп(1, 2, 3); Сопзо1е.ит1ое("1пустановка исходных координат точки а: "); а. ЕЬон (); с = ++а4 // инкрементировать координаты точки а, // а затем присвоить их точке с сопзо1е.иг1сеь1пе("1песли с = +та"); Сопзо1е.игапе("то координаты точки с равны "); с.5пон(); Сопзо1е.игъое("а координаты точки а равны ")4 а.звон(); ) ) Вот к какому результату приводит выполнение данной программы: Координаты точки а: 1, 2, 3 Координаты точки Ь: 10, 10, 10 Результат сложения а + Ь: 11, 12, 13 Результат сложения а + Ь + с: 22, 24, 25 Результат вычитания с — а: 21, 22, 23 Результат вычитания с — Ь: 11, 12, 13 Результат присваивания -а: -1, -2, -3 Если с = ать то координаты точки с равны 1, 2, 3 а координаты точки а равны 2, 3, 4 Установка исходных координат точки а: 1, 2, 3 Если с = ++а то координаты точки с равны 2, 3, 4 а координаты точки а равны 2, 3, 4 Выполнение операций со встроенными в СФ типами данных Для любого заданного класса и оператора имеется также воз)ножность перегрузить сам операторный метод.

Это, в частности, требуется для того, чтобы разрешить операции с типом класса и другими типами данных, в том числе и встроенными. Вновь обратимся к классу тпгееп. На примере этого класса ранее было показано, как оператор + перегружается для сложения координат одного объекта типа тЬгееп с координатами другого. Но Глава 9.

Перегрузка операторов 263 это далеко не единственный способ определения операции сложения для класса Т)ггееО. Так, было бы не менее полезно прибавить целое значение к каждой координате объекта типа Т)ггееО. Подобная операция пригодилась бы для переноса осей координат. Но для ее выполнения придется перегрузить оператор + еще рзз, как показано ниже. // Перегрузить бинарный оператор ь для сложения объекта О типа тлгееп и целого значения типа 1пс.

рцЫгс всас1с Тпгеео орегасог ь(тьгеео ор1, гпс ор2) ( Тьгееп гезц1Г = пен Тьгееп(); гезц1г.х = ор1.х ь ор2; гезц1с.у = ор1.у + ор2) гезц1с.г = ор1.г + ор2; гесцгп гевц1Г; ) Как видите, второй параметр операторного метода имеет тип Тпг. Следовательно, в этом методе разрешается сложение целого значения с каждым полем объекта типа Т)ггееО. Такая операция вполне допустима, потому что, как пояснялось выше, при перегрузке бинарного оператора один из его операндов должен быть того же типа, что и класс, для которого этот оператор перегружается. Но у второго операнда этого оператора может быть любой другой тип.

Ниже приведен вариант класса т)ггееО с двумя перегружаемыми методами оператора +. // Перегрузить бинарный оператор + дважды: один раз— // для сложения объектов класса Тлгеео, а другой раз— О для сложения объекта типа Тпгееп и целого значения // типа гпс. цзгпо зувгелц // Класс для хранения трехмерных координат. с1азз Тпгееп ( гпг х, у, г; // трехмерные координаты рцЫгс Тьгееэ() ( х = у = г = О; ) рцЫгс Тьгееп(гпс г, гпс 1, Тпс К) ( х = 1; у = зг г = Ки О Перегрузить бинарный оператор + дпя сложения // объектов класса тьгееп.

рцЫ1с згаг1с тьгееО орегагог ь(тьгееО ор1, тьгееп ор2) ( Тпгеео гезц1Г = пен Тпгееэ()) /* Сложить коорлинаты двух точек и возвратить результат. */ гезц1с.х = ор1.х + ор2.х; гезц1с.у = ор1.у + ор2.у) гезц1с.г = ор1.х ь ор2.г; гесцгп гезц1Г; ) // Перегрузить бинарный оператор + для сложения 264 Часть ). Язык СК // объекта типа ТЬгеев и целого значения типа 1пс. рцЬ11с всаггс Тпгеео орегасог т(тпгеео ор1, гпс ор2) ( ТЬгеео гевц1Г = лен Тпгеев()," гевц1г.х = ор1.х т ор2т гевц1с.у = ор1.у + ор2) гевц1х.х = ор1.х т ор2; гесцгп' гевц1Г; ) О Вывести'координаты Х, у, Е. рцвггс чо10 5Ьон() ( сопво1е.игггеьгпе(х + ", " + у т ", " + х) ) ) ) с1авв ТЬгееооежо ( всасгс чо10 Магп П ( ТЬгеев а = пен ТЬгеео(1, 2, 3); Тпгеев Ь = лен Тпгеео(10, 10, 10)т ТЬгеев с = печ Тпгеео()т Сопво1е.иггхе("Координаты точки а: ")т а.зпоы()) Сопво1е.иггсе11пе()т Сопво1е.иггсе("Координаты точки Ь: ")т Ь.5Ьою() т Сопво1е.иггсе11пе()т с = а ь Ьт // сложить объекты класса ТЬгеев Сопво1е.иггсе("Результат сложения а + Ь: ") с.зпон(); Сопво1е.нггсеъгпе()т с = Ь + 10; // сложить объект типа Тигеев и целое // значение типа ТЬГ Сопво1е.иггсе("Результат сложения Ь ь 10т ")к с.5Ьон()т ) ) При выполнении этого кода получается следуюший результат: Координаты точки ат 1, 2, 3 Координаты точки Ь: 10, 10, 10 Результат сложения а ь Ь: 11, 12, 13 Результат сложения Ь + 10: 20, 20, 20 Как подтверждает приведенный выше результат, когда оператор ь применяется к двум объектам класса тьгееО, то складываются их координаты.

А когда он применяется Глава в. Перегрузка операторов 265 к объекту типа ТЬгееР и целому значению, то координаты этого объекта увеличиваются на заданное целое значение. Продемонстрированная выше перегрузка оператора +, безусловно, расширяет полезные функции класса ТЬгееР, тем не менее, она делает это не до конца. И вот почему. Метод орегаеог+ (ТЬгееР, Тле) позволяет выполНять опеРации, подобные следующей: оЫ = оЬ2 + 10т Но, к сожалению, он не позволяет выполнять операции, аналогичные следующей: оЫ = 10 т оЬ2т Дело в том, что второй целочисленный аргумент данного метода обозначает правый операнд бинарного оператор +, но в приведенной выше строке кода целочисленный аргумент указывается слева.

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

Ниже приведен еще один вариант класса ТпгееР, в котором бинарный оператор + перегружается описанным выше образом. // Перегрузить бинарный оператор + трижды: один раз— // для сложения объектов класса ТЬгеео, второй раз— // для сложения объекта типа ТЬгеео и целого значения // типа Тпп, а третий раз — для сложения целого значения // типа 1пк и объекта типа ТЬгееп. цз1пд Яузкезп // Класс для хранения трехмерных координат. с1азз ТЬгеео ( 1пг х, у, гт // трехмерные координаты рцЬ11с Тпгеев() ( х = у = г = от ) рцЫгс ТЬгеев(1пк 1, Тпк 0, 1пк К) ( х = гт у = 1т г = Кт ) // Перегрузить бинарный оператор + для сложения // объектов класса ТЬгеев.

рцЫ1с зкакзс Тлгеев орегаког +(ТЬгееп ор1, ТЬгееР ор2) ( ТЬгеео гезц1г = пен ТЬгееп()1 /* Сложить координаты двух точек и возвратить результат. */ гезц1е.х = ор1.х + ор2.хт гезц1г.у = ор1.у + ор2.у; гезц1к.г = ор1.г + ор2.г; гетцгп гезц1г; ) // Перегрузить бинарный оператор + для сложения 266 Часть (. Язык С» // объекта типа Тпгееб и целого значения типа 1пт.

риЫ1с вгаттс ТЬтееО орегатог ь(ТЬгееО ор1, гпт ор2) ( ТЬтееб геяи1Г = пен Тпгееб(); геви1т.х = ор1.х + ор2) теяи1т.у = ор1.у Ь ор2; геви1т.г = ор1.г + ор2; тетигп теви1Г; ) // Перегрузить бинарный оператор + для сложения // целого значения типа тпс и объекта типа Тптееб. риЫтс ятаттс ТЬгееО орегатог +(тпт ор1, ТЬгееО ор2) ( ТЬгееО геяи1Г пен ТЬгееО(); тевигг.х = ор2.х ь ор1) геви1т.у = ор2.у + ор1( геви1т.г = ор2.г + ор1( гетигп теяи1Г; ) // Вывести координаты Х, у, Е. риЬ11с чотб 5Ьон() ( Сопяо1е.йг1те1.тле (х + ", " + у + ", " + г); ) с1авя ТЬгееООеыо ( ятаттс чозб Иа1п() ( Тпгееб а = пен ТЬгееО(1, 2, 3)т Тпгееб Ь = пен Тпгееб(10, 10, 10)т Тпгееб с = лен ТЬгееО(); Сопво1е.йгтте("Координаты точки а: ")к а. 5Ьон () т Сопво1е.йг1тейапе()) Сопво1е.йгтте("Координаты точки Ь: "); Ь.

5Ьон () т Сопяо1е.йгтгейапе()т с = а т Ь! // сложить объекты класса ТЬгееО Сопяо1е.йгтте("Результат сложения а + Ь: ") с.впон(); Сопво1е.йг1те11пе(); с = Ь + 10т // сложить объект типа ТЬгееО и целое // значение типа тпс Сопяо1е.йгтсе("Результат сложения Ь + 10: ")т с.впон() т Сопво1е.йттсестпе()( Глава 9. Перегрузка операторов 267 с = 15 + Ьг // сложить целое значение типа Тпк и // объект типа Тпгееп Сопао1е.нгъке("Результат сложения 15 + Ь: ")т с.

Характеристики

Тип файла
DJVU-файл
Размер
6,78 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее