Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет183/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   179   180   181   182   183   184   185   186   ...   256
Байланысты:
Бьерн Страуструп. Язык программирования С . М Бином, 2011

9.9 Упражнения 
1. (*2) 
Обобщите класс STC до шаблона типа, который позволяет хранить и устанавливать функции 
разных типов. 
2. (*3) Дополните класс CheckedPtrToT из $$7.10 до шаблона типа, в котором особые ситуации 
сигнализируют о динамических ошибках. 
3. (*3) 
Напишите функцию find для поиска в бинарном дереве узлов по значению поля типа char*. Если 
найден узел с полем, имеющим значение "hello", она должна возвращать указатель на него. Для 
обозначения неудачного поиска используйте особую ситуацию. 
4. (*1) Определите класс Int, совпадающий во всем со встроенным типом int за исключением того, что 
вместо переполнения или потери значимости в этом классе запускаются особые ситуации. 
Подсказка: см. $$9.3.2. 
5. (*2) 
Перенесите из стандартного интерфейса С в вашу операционную систему основные операции с 
файлами: открытие, закрытие, чтение и запись. Реализуйте их как функции на С++ с тем же 
назначением, что и функций на С, но в случае ошибок запускайте особые ситуации. 
6. (*1) Напишите полное определение шаблона типа Vector с особыми ситуациями Range и Size. 
Подсказка: см. $$9.3. 
7. (*1) Напишите цикл для вычисления суммы элементов вектора, определенного в упражнении 6, 
причем не проверяйте размер вектора. Почему это плохое решение? 
8. (*2.5) Допустим класс Exception используется как базовый для всех классов, задающих особые 
ситуации. Каков должен быть его вид? Какая от него могла быть польза? Какие неудобства может 
вызвать требование обязательного использования этого класса? 
9. (*2) 
Напишите класс или шаблон типа, который поможет реализовать обратный вызов. 
10. (*2) Напишите класс Lock (замок) для какой-нибудь системы, допускающей параллельное 
выполнение. 
11. (*1) Пусть определена функция 
int main() { /* ... */ } 
Измените ее так, чтобы в ней перехватывались все особые ситуации, преобразовывались в 
сообщения об ошибке и вызов abort(). Подсказка: в функции fromC() из $$9.8 учтены не все случаи. 


Бьерн Страуструп.
Язык программирования С++ 
 
257 


Достарыңызбен бөлісу:
1   ...   179   180   181   182   183   184   185   186   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет