Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ntny
7 / 7 / 0
Регистрация: 17.06.2012
Сообщений: 168
#1

исключения - C++

21.11.2012, 19:29. Просмотров 462. Ответов 11
Метки нет (Все метки)

Есть тестовое задание. Реализовать класс.
Есть метод.
C++ (Qt)
1
2
3
4
* @note The function does not validate the index, if the index is out
         * of the bounds (0, GetLength() - 1), behavior is undefined.
         */
        char operator [] (int index) const;
его нужно реализовать.

Я видимо туплю)
Но в комментариях дается подсказка что неплохо было бы проверить входные данные, или подразумевается, что мне не стоит делать проверку на индекс?
Просто не совсем понятно, что от меня ждут в итоге.

Насколько я понимаю когда пишут библиотеки указывают, что данная функция выбрасывает такое-то исключение и его обрабатывает клиентский код?

Задание написать аналог String
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2012, 19:29     исключения
Посмотрите здесь:

Исключения - C++
читаю про исключения, сама концепция понятна, но стоит ли вообще заострять на исключениях своё внимание? например описан класс exception,...

Исключения - C++
Никак не могу понять, как работают исключения в С++. Может быть кто-нибудь сможет объяснить на примере деления на 0. Исключения должны быть...

Исключения - C++
Привет всем. Помогите плиз с задачкой, никак не могу решить, нужно из кода ниже сделать классы производными от logic_error, определенного в...

Исключения - C++
Упражняюсь в программировании. Написал абстрактный класс Shape, от которого наследуются Quadr и Treyg. Создал класс исключения Exeption,...

Исключения С++ - C++
С++. Перечитал уже много учебников, видел много примеров, но никак не пойму как пользоваться блоками try catch.. Может хоть кто-нибудь...

исключения - C++
скажите пожалуйстокак написать через исключение if(n<=0 || n>=100000000) { fclose(f); f=fopen("output.txt", "w"); ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.11.2012, 21:26     исключения #2
У вас здесь прямым текстом написано: если индекс не лежит в допустимых границах — это половые проблемы пользователя класса. Это разрешение не делать проверок и возвращать мусор, если индекс не в допустимых пределах.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
21.11.2012, 21:31     исключения #3
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Это разрешение не делать проверок и возвращать мусор, если индекс не в допустимых пределах.
А также взываться и форматировать диски
ntny
7 / 7 / 0
Регистрация: 17.06.2012
Сообщений: 168
21.11.2012, 21:41  [ТС]     исключения #4
В задании написано не менять "контракт".
Я так понимаю если я укажу, что функция выбрасывает исключение я изменю контракт, а если сделаю проверку внутри то все нормально?
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.11.2012, 21:50     исключения #5
У вас в контракте чёрным по белому: «The function does not validate the index». Никаких проверок, просто return data[index]; и всё.
ntny
7 / 7 / 0
Регистрация: 17.06.2012
Сообщений: 168
22.11.2012, 14:04  [ТС]     исключения #6
А зачем так делать?
Ради скорости?
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
22.11.2012, 14:39     исключения #7
ntny, Ага. Ну еще показать юзеру, что нужно читать доку, а если не читаешь - сам дурак.
Avazart
7101 / 5278 / 267
Регистрация: 10.12.2010
Сообщений: 23,279
Записей в блоге: 17
22.11.2012, 14:58     исключения #8
По тому как для доступа с проверкой индекса есть метод at()...
А [] работает подобно массиву быстро, но опасно ( не делать же проверку каждого индекса при переборе 100...0 элементов )
ntny
7 / 7 / 0
Регистрация: 17.06.2012
Сообщений: 168
22.11.2012, 15:11  [ТС]     исключения #9
В задании написали что можно расширять класс.
Решил унаследовать и добавить в раширении методы add() и set() с проверкой.

Чем append() отличается от + для строк?
Я знаю, что append() быстрее, но непонятно за счет чего и как он реализован
Avazart
7101 / 5278 / 267
Регистрация: 10.12.2010
Сообщений: 23,279
Записей в блоге: 17
22.11.2012, 15:14     исключения #10
НУ быстрее возможно по тому что через него реализовывается оператор += , а не наоборот.

А реализован он наверное на основе Си ф-ций типа strcpy()
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
22.11.2012, 15:28     исключения #11
Avazart, append на strcpy? может strcat все же?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2012, 15:32     исключения
Еще ссылки по теме:

Исключения - C++
Помогите пожалуйста!!! Написал два исключения, но выводит что-то неправильно. Помогите найти ошибки!!! Задание: для функции:...

Исключения - C++
Всем доброго времени суток! В универе дошли до темы "Обработка исключительных ситуаций" и возник вопрос, где в реальных приложениях...

Исключения - C++
Помогите реализовать класс исключения в данном коде. Задание: Реализуемая функция должна генерировать подходящие исключения. Обработку...

Исключения - C++
Не совсем понимаю, как действуют исключения, для чего использовать свои классы при отлавливании исключения... Покидайте ссылки на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
7101 / 5278 / 267
Регистрация: 10.12.2010
Сообщений: 23,279
Записей в блоге: 17
22.11.2012, 15:32     исключения #12
Ну так как реализуешь... там ведь и случай перераспределения может быть, не суть...
Yandex
Объявления
22.11.2012, 15:32     исключения
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru