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

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

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

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

рпьтгс вгас1с тпгееО орегагог ++(тлгееО ор) ( ТпгееО гевп1Г = пен ТнгееО()) // Возвратить результат инкрементирования. геви1в.х = ор.х + 1; геви1г.у = ор.у + 1; геви10.г = ор.в + 1; гегогп геяо1г; ) // Вывести координаты Х, У, Б. риЬ11с чо10 БПон() ( сопво1е.игтге11пе(х т ", " + у + ", " + г) т ) ) с1авв ТпгееООежо ( всас1с тога Иатп() ( ТпгееО а = пен ТпгееО(1, 2, 3)) ТпгееО Ь = пен ТпгееО(10, 10, 10) ТпгееР с = пен ТпгееР(); сопво1е.нггсе("Координаты точки а. "")т а.впон(); Сопво1е.йг1пе01пе() ) Сопво1е.нг1ве("Координаты точки Ь: "); Ь.БПон(): Сопво1е.пгасе11пе()т с = а + Ь) // сложить координаты точек а и Ь Сопво1е.иг1пе("Результат сложения а + Ь: ") с. Бпон () ) Сопво1е.иг1се11пе()т с = а + Ь + с) // сложить координаты точек а, Ь и с Сопво1е.иггсе("Результат сложения а + Ь ь с: "); с.впоу (): Сопво1е.иг1се01пе()т 276 Часгь ).

Язык С() с = с — аГ // вычесть координаты точки а Сопво1е.йгьге("Результат вычитания с — а: ") с.ЯЬои()г сопзо1е.йтгсеьгпе()г с = с — Ьг // вычесть координаты точки Ь Сопзо1е.йт1пе("Результат вычитания с — Ь: ") с.ЯЬои()г Сопво1е.йггее11пе() г с = -а) // присвоить точке с отрицательные координаты точки а Сопво1е.йт1пе("Результат присваивания -а: "); с.ЯЬои()г Сопво1е.йтзпеььпе(); с = а++) // присвоить точке с координаты точки а, // а затем инкрементировать их Сопзо1е.йтзтепзпе("Если с = а++")) Сопво1е.йхзве("то координаты точки с равны ")г с.ЯЬои() г Сопзо1е.йгзпе("а координаты точки а равны "); а.ЯЬои()г // Установить исходные координаты (1,2,3) точки а а = пеи Тйтеео(1, 2, 3)Г Сопво1е.йхгге("~пустановка исходных координат точки а: ") а.ЯЬои()г с = ++а/ // инкрементировать координаты точки а, // а затем присвоить их точке с Сопво1е.йхгсе11пе("гпксли с = ++а")г Сопао1е.йсЕСе("то координаты точки с равны ")г, с.ЯЬои()г Сопзо1е.йгьте("а координаты точки а равны ")Г а.ЯЬои() г ) Вот к какому результату приводит выполнение данной программы.

Координаты точки а: 1, 2, 3 Координаты точки Ь: 10, 10, 10 Результат сложения а + Ь: 11, 12, 13 Результат сложения а + Ь + с: 22, 24, 26 Результат вычитания с — а: 21, 22, 23 Результат вычитания с — Ъ: 11, 12, 13 Результат присваивания -а: -1, -2, -3 Если с = а++ то координаты точки с равны 1, 2, 3 Глава 9. Перегрузка операторов 277 а координаты точки а равны 2, 3, 4 Установка исхолных координат точки а: 1, 2, 3 Если с = т+а то координаты точки с равны 2, 3, 4 а координаты точки а равны 2, 3, 4 Выполнение операций со встроенными в С№ типами данных Для любого заданного класса и оператора имеется также возможность перегрузить сам операторный метод.

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

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

Но у второго операнда этого оператора может быть любой другой тип. Ниже приведен вариант класса ТЛгееР с двумя перегружаемыми методами оператора ы УУ Перегрузить бинарный оператор + дважды: О один раз — для сложения объектов класса ТЛгееО, !/ а другой раз — для сложения объекта типа ТЛгееО и целого значения типа гпс. ияъпд Буягегм Класс для хранения трехмерных координат. с1аяя ТЛгееО 1пг х, у, г; // трехмерные координаты 278 Часть 1. Язык С(т риЬ1гс Тдгееб() ( х = у = г = О) ) риыгс тьтееО(гпг 1, гпг 2, зпт х) ( х = г; у = 21 х = х; У* Сложить геяи1Г.

х теяи1Ыу = геяи1г.т координаты двух точек и возвратить результат. */ ор1.х + ор2.х) ор1.у + ор2.у; ор1.х т ор2.т) гетигп гевитг; ) Перегрузить бинарный оператор + для сложения // объекта типа ТЬгееб и целого значения типа 1пт. риЫ1с ягат1с Тьтееб орегагог +(Тпгееб ор1, 1пс ор2) ( Тьгееб геяи1Г = пеи Тьтееб(); геяи1т.х = ор1.х + ор2) геяи1т.у = ор1.у + ор2) теяи1Ы х = ор1.в + ор2) гетигп геви1г) Вывести координаты Х, У, Е.

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

риыгс ягаггс тьгееО орегатог +(тьгееб ор1, тьтееО ор2) ( Тьгееб теви1т = пеи ТЬгееО(); Глава 9. Перегрузка операторов 279 Сопяо1е.кгьсе("Результат сложения Ь + 10: ") с. Бион () г При выполйении этого кода получается следующий результат. Координаты точки а: 1, 2, 3 Координаты точки Ь: 10, 10, 10 Результат сложения а + Ь: 11, 12, 13 Результат сложения Ь + 10: 20, 20, 20 Как подтверждает приведенный выше результат, когда оператор + применяется к двум объектам класса ТЬгееО, то складываются их координаты.

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

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

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

*/ гевц1т.х = 'ор1.х ь ор2.х; теяц1т.у = ор1.у + ор2.у) теяц1т.г = ор1.г + ор2.т) гетцгп гевц1г; ) // Перегрузить бинарный оператор + для сложения // объекта типа тьгееО и целого значения типа гпг. рцазгс всат!с ТЬгееО орегатог +(ТЬгееО ор1, Тпт ор2) ( ТЬгееО гевц1Г = пен ТЬгееб()! теяц1т.х = ор1.х + ор2; гевц1т.у = ор1.у + ор2; гевп1г.т = ор1.т + ор2; гегогп гевц1т! ) // Перегрузить бинарный оператор + для сложения // целого значения типа 1пт и объекта типа ТЬтееО.

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

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

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

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

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее