Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

21.11.2012, 19:29. Просмотров 478. Ответов 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2012, 19:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос исключения (C++):

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

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

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

Исключения - C++
Как бросить исключение выхода за границы массива? Как его поймать? Что делать после отбрасывания? TItem & TArray::operator (unsigned...

исключения - C++
пожалуйста, gомогите решить задачу на с++ , кoтoрая пoкaзывaет, чтo функция co cвoим блoкoм try не дoлжна пeрeхватывaть кaждую вoзмoжную...

Исключения - C++
У Эккеля, во втором томе, в главе про исключения, встретил конструкцию такого вида: T& operator(int i) throw(RangeError) { if(i...

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

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

А реализован он наверное на основе Си ф-ций типа strcpy()
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
22.11.2012, 15:28 #11
Avazart, append на strcpy? может strcat все же?
0
Avazart
Эксперт С++
7245 / 5417 / 295
Регистрация: 10.12.2010
Сообщений: 24,034
Записей в блоге: 17
22.11.2012, 15:32 #12
Ну так как реализуешь... там ведь и случай перераспределения может быть, не суть...
0
22.11.2012, 15:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2012, 15:32
Привет! Вот еще темы с ответами:

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

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

Исключения - C++
можно ли возвращаться к выполнению кода после обработки исключения, например try{ func1();//обе ф-и могут вызывать исключение...

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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