|
3 / 3 / 3
Регистрация: 31.10.2010
Сообщений: 120
|
||||||||||||||||
Перезагрузка operator ==13.11.2011, 02:40. Показов 4377. Ответов 45
Метки нет (Все метки)
Тренируюсь и пишу клас комплексных чисел. Проблема с перезагнрузкой оператора сравнения да и другие перезагрузки не хотят использоваться. Как решить эту проблему? Ведь желательно передавать константные ссылки? Но к ним уже стает проблематично использовать перезагрузки..
И еще вопрос к try catch: Посоветуйте как правильно отловить ошибку с делением на 0.
0
|
||||||||||||||||
| 13.11.2011, 02:40 | |
|
Ответы с готовыми решениями:
45
перезагрузка operator + Перезагрузка operator - Перезагрузка операторов "неоднозначный operator" |
|
Заблокирован
|
||
| 15.11.2011, 14:26 | ||
|
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 15.11.2011, 14:27 | ||
|
0
|
||
|
Заблокирован
|
|
| 15.11.2011, 14:28 | |
|
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 15.11.2011, 14:41 | |||
|
1. Ты вычисляешь, сколько залить бензина в бак. Результат не может быть ни бесконечным, ни неопределённым, ни отрицательным, ни имеющим мнимую часть. А ты поделил на ноль. (x/y)*y=x, z*0=0, при любом x<>0, z=x/y, получаем, что при y=0 будет (x/0)*0=x, z*0=x, 0=x, 0<>0. Это не допустимо математически. 2. Ты говоришь таксисту адрес: страна Выдумляндия, область Кисельных Облаков, город Молокореченск, улица Сказочников, дом минус восемь с половиной. Это не существующий адрес, но вычислять его не надо. Добавлено через 4 минуты
0
|
|||
|
Заблокирован
|
||
| 15.11.2011, 14:45 | ||
|
"извините, но делитель нулем быть не может. введите другой делитель" и тп. это ШТАТНАЯ работа любого морального терминала - проверить что введёт пользователь. Накой чорт тут вообще может понадобится бросать исключения? Кто их будит обрабатывать? Блондинка, которая тыкает в сенсорный экранчик терминала, пытаясь внести деньги на счет?
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||
| 15.11.2011, 14:46 | ||||||
|
0
|
||||||
|
Заблокирован
|
||
| 15.11.2011, 14:50 | ||
|
Это при том, что инкапсуляция гарантирует пользователю, что он может пользоваться классом ничего не зная о его устройстве. Итого: нарушение инкапсуляции.
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 15.11.2011, 14:51 | |
|
0
|
|
|
Заблокирован
|
|
| 15.11.2011, 14:53 | |
|
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|||||
| 15.11.2011, 14:55 | |||||
|
0
|
|||||
|
Заблокирован
|
|
| 15.11.2011, 14:56 | |
|
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 15.11.2011, 14:57 | ||
|
0
|
||
|
Заблокирован
|
||
| 15.11.2011, 14:58 | ||
|
Запросить данные заного, или Вернуть код ошибки, или ещё что либо - зависит от задачи, и фантазии автора класса. Вопрос: ситуация с кривыми входными данными вполне ожидаемая. С какой пор вполне ожидаемые ситуации вдруг стали исключительными?
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 15.11.2011, 14:59 | ||
|
0
|
||
|
Заблокирован
|
||
| 15.11.2011, 14:59 | ||
|
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 15.11.2011, 15:03 | |
|
Bers, а ничего, что живому человеку пофиг на всё, в том числе на то, на каком языке написана программа и как обрабатываются ошибки? Ему надо в одну формочку вбить данные и в другой получить результат. Среда сама всё это обработает. Исключения как раз для неё и кидаются, а не для блондинки, которая строку вместо числа ввела.
0
|
|
|
Заблокирован
|
|||
| 15.11.2011, 15:05 | |||
|
Они не имеют ни малейшего отношения ни к пользвателям, ни к самому классу. Например - операция записи на диск провалилась, потому что в процессе записи кончилось место на диске (ОС многозадачная, и в этот самый момент другой процесс тоже записывал. Вот, не хватило места). Эта ситуация возникла не по причине не_валидных данных, и не по причине программной ошибки. Это исключительная ситуация, которую класс не в состоянии никак заранее предсказать. Эту ошибку вызывающая сторона так же не в состоянии обработать, если она не в курсе почему произошла трагедия. Что бы она была в курсе, она должна знать устройство класса. Если вы пишите класс, который что бы надёжно работал - требовал бы знать его внутренности, то ваши классы - нарушение инкапсцуляции, и безотственность. Другими словами - быдлокод Добавлено через 1 минуту И ответил ему в соотвествии с тем, что он имел ввиду. Это понятно? Если это понятно, то какие ещё есть вопросы? Что тогда не понятно?
0
|
|||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 15.11.2011, 15:19 | |
|
Bers, ну да, я всегда утверждал, что весь стл - быдлокод, вектор в частности. Ишь ты, чтобы корректно с ним работать, надо знать, что он std::out_of_range кидает, падлюка! Инкапсуляция нарушена, демократия в опасности.
0
|
|
|
Заблокирован
|
||
| 15.11.2011, 15:27 | ||
|
А я знал на самом деле, что обязательно кто нибудь скажет про стл. Потому что вы все говорите одно и тоже. Выход за пределы диапазона массива - есть программная ошибка в 99% случаев. Вектор кидает исключение именно потому, что если их не обработать - будит бабах! Именно потому, что бы услужливо показать вызывающей стороне, что у неё программная ошибка. Оказывает услугу. Что бы программист-пользователь в кратчайшее время узнал, что что-то не так с его кодом. Что характерно, если вектор не не кинет исключение (без проверки диапазона), то исключение выкинет ище какая нибудь хрень. В любом случае будит крушение. Я ни разу не ставил ловушку на такое исключение. Я принципе не знаю как можно обработать программную ошибку. Если такое исключение сработало, нужно включать отладчик, и дебажить до посинения. Ловушки тут не помогут Хотя я лично в случае если интерпритирую ситуацию как вероятную ошибку программиста в вызывающей стороне, никаких исключений все равно не кидаю. А зажигаю ассерт, который не заламывает процесс. И делаю откат операции.
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 15.11.2011, 15:34 | ||
|
Bers, ага, т.е. то, что произошёл выход за границы массива - беда, и нужно кидать исключение, а то, что в каких-то сложных вычислениях произошло деление на нуль - фигня, само поправится.
Не по теме: P.S. Про stl я уже давно сказал, но вы, по-видимому, не желали слушать. Добавлено через 57 секунд Добавлено через 33 секунды А вообще - ассертов в релизе быть не должно, они исключительно для отладки.
0
|
||
| 15.11.2011, 15:34 | |
|
Class & operator's |Error: undefined reference to operator
Вызов operator[] через operator[] const
Реализация operator + через operator += Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|