15.07.2010, 05:53 | |
Ответы с готовыми решениями:
1272
Элементарные программы, для лучшего понимания языка... Задачи для тренировки и лучшего понимания языка Литература для лучшего понимания сути программирования Набор задачь для тренировки и улучшения понимания программирования |
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
27.02.2011, 21:54 | 1221 |
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
20.03.2011, 05:59 [ТС] | 1222 | |||||
Для тех кто не читал Саттера - будет интересно.
Кто читал - итак знает. Является данный код корректным с точки зрения гарантии безопасности исключений?
Если нет - почему и как сделать, чтобы являлся?
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
||||||
20.03.2011, 14:01 | 1223 | |||||
ForEveR
Не является. В точке вызова f возможна утечка памяти. Первыми будут выполнены операторы выделения памяти (порядок выполнения никак не оговаривается) и если первый выполнится удачно, а второй вызовет исключение, то будем иметь утечку.
Решение:
1
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
20.03.2011, 18:41 | 1225 |
Evg
Да, но в данном случае auto_ptr имеются и благодаря им проблему можно решить и сделать код безопасным относительно исключений, что и показано в коде решения.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
20.03.2011, 20:19 [ТС] | 1226 | |||||
2Evg
Evg, Нет. Он прав.
2CyBOSSeR
CyBOSSeR, Да. Именно так. Но подозреваю дичайше, что ты читал Саттера)
Добавлено через 4 минуты Еще задачка. Строго желательно решать без компиля, иначе все сразу видно. Собственно на знание стандарта и/или Саттера. Достаточно для работы программы так обработать исключение? Другими словами, может-ли конструктор "поглотить" выброшенное исключение?
0
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|
20.03.2011, 21:03 | 1227 |
ForEveR
ForEveR, могу ошибаться, но по-моему в стандарте оговорено, что даже если в конструкторе отловлено исключение, то оно обязано быть выброшенным повторно, так что если не поставить дополнительное try {} catch(){} в main'е, то повторно выброшенное исключение от A даст ошибку. Так что такой меры недостаточно.
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
20.03.2011, 21:22 [ТС] | 1228 | ||||||||||
Ma3a
Ma3a, Под кат спрячь. Может кто еще ответить захочет. А так да. Верно.
Добавлено через 13 минут Напишите почти строго безопасный оператор копирующего присваивания для класса
Определение класса решите сами, какое будет. Как минимум должно быть такое.
1
|
CyBOSSeR
|
20.03.2011, 21:57
#1229
|
1
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|||||||||||
21.03.2011, 22:24 | 1230 | ||||||||||
ForEveR
Честно говоря,ничего более толкового в голову не пришло, кроме как сделать функцию-переходник, для которой запрещено выбрасывание исключений. вышло в самом грубом приближении так
Добавлено через 23 часа 20 минут Also 2ForEveR
Погорячился я с такой реализацией ) Вообще говоря, насколько я понимаю строго безопасную обработку исключений, при случае чего плохого, состояние объекта должно остаться неизменным, то есть в случае чего нужно откатить все изменения без порчи ссылок и прочего, я правильно понимаю? Тогда если действовать в соответствии с таким принципом, то приходится извернуться со ссылками и накрутить нечто с std::auto_ptr, так как ни один его член не может выкинуть исключение и вообще семантика как раз располагает к пользованию безопасных указателей
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
22.03.2011, 00:41 [ТС] | 1231 | |||||
2Ma3a
Ma3a, Да. Вполне вариант. По книжке Саттера предпочтительнее похожий, но несколько другой вариант.
0
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|
22.03.2011, 23:04 | 1232 |
ForEveR
Хм, была такая мысль, но я посчитал, что инкапсулировать объект класса T в еще одной скрытой внутренней реализации для Some_class будет излишне, хотя паттерн конечно замечательный Саттера не читал, как-то не дошли руки до сих пор, но Майерса давно начинал читать, там было что-то похожее, надо будет наконец дочитать.
1
|
0 / 0 / 0
Регистрация: 10.04.2011
Сообщений: 4
|
|
10.04.2011, 06:29 | 1233 |
привет всем.недавно зарегился на mipt пытаюсь решить задачу 201 почему-то не проходит мое решение оно я думаю n*ln(n).
Так ли это,если ошибаюсь объясните плиз,задача вроде легкая.
0
|
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
|
|
10.04.2011, 08:26 | 1234 |
Конечно, местные гуру способны оценить асимптотику твоего решения по одной лишь ауре твоего поста.
0
|
Заблокирован
|
||||||
10.04.2011, 08:38 | 1235 | |||||
Моё решение. Но оно по time limit не проходит
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
10.04.2011, 10:40 | 1236 | |||||
1
|
0 / 0 / 0
Регистрация: 10.04.2011
Сообщений: 4
|
||||||
11.04.2011, 14:11 | 1237 | |||||
снова mipt пытаюсь решить задачу 001
мой код не проходит 7 тест в чем проблема?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
11.04.2011, 14:16 [ТС] | 1238 | |||||
carlilenny,
0
|
0 / 0 / 0
Регистрация: 10.04.2011
Сообщений: 4
|
|
11.04.2011, 14:20 | 1239 |
там типа #define x 10000
0
|
Заблокирован
|
||||||
11.04.2011, 16:04 | 1240 | |||||
Mr.X, тесты оно прошло?
Штоэто за кусорт? Зачем?
А, вообще, мне кажется, как-то ну совсем не хорошо разбирать подобные задачи на форуме. Люди ж там типа соревнуются, а ты приходишь и выпрашиваешь готовые ответы.
0
|
11.04.2011, 16:04 | |
11.04.2011, 16:04 | |
Помогаю со студенческими работами здесь
1240
Проверить на правильность и закомментировать весь код для лучшего понимания Нужны задачи для тренировки Нужны задачи для тренировки Нужны задачи для тренировки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |