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

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

Восстановить пароль Регистрация
 
ntny
7 / 7 / 0
Регистрация: 17.06.2012
Сообщений: 168
21.11.2012, 19:29     исключения #1
Есть тестовое задание. Реализовать класс.
Есть метод.
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++
Исключения C++
Исключения C++
C++ Исключения
C++ Исключения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.11.2012, 21:26     исключения #2
У вас здесь прямым текстом написано: если индекс не лежит в допустимых границах — это половые проблемы пользователя класса. Это разрешение не делать проверок и возвращать мусор, если индекс не в допустимых пределах.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
21.11.2012, 21:31     исключения #3
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Это разрешение не делать проверок и возвращать мусор, если индекс не в допустимых пределах.
А также взываться и форматировать диски
ntny
7 / 7 / 0
Регистрация: 17.06.2012
Сообщений: 168
21.11.2012, 21:41  [ТС]     исключения #4
В задании написано не менять "контракт".
Я так понимаю если я укажу, что функция выбрасывает исключение я изменю контракт, а если сделаю проверку внутри то все нормально?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
22.11.2012, 14:39     исключения #7
ntny, Ага. Ну еще показать юзеру, что нужно читать доку, а если не читаешь - сам дурак.
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,593
Записей в блоге: 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
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,593
Записей в блоге: 17
22.11.2012, 15:14     исключения #10
НУ быстрее возможно по тому что через него реализовывается оператор += , а не наоборот.

А реализован он наверное на основе Си ф-ций типа strcpy()
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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++ Исключения

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

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

Текущее время: 14:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru