Б. Страуструп - Язык программирования С++ (1119446), страница 103
Текст из файла (страница 103)
Какие еще полезные операции можнопредложить? Проверьте класс Persistent на нескольких классах по своему выбору. Является ликласс Persistent узловым классом, конкретным или абстрактным типом? Аргументируйте ответ.11. (*3) Составьте только описание класса stack, который реализует стек с помощью операций create()(создать стек), delete() (уничтожить стек), push() (записать в стек) и pop() (читать из стека).Используйте только статические члены. Для привязки и обозначения стеков определите класс id.Гарантируйте, что пользователь сможет копировать объекты stack::id, но не сможет работать с нимииным способом. Сравните это определение стека с классом stack из $$8.2.12. (*3) Составьте описание класса stack, который является абстрактным типом ($$13.3). Предложитедве различные реализации для интерфейса, заданного stack.
Напишите небольшую программу,работающую с этими классами. Сравните это решение с классами, определяющими стек, изпредыдущего упражнения и из $$8.2.13. (*3) Составьте такое описание класса stack, для которого можно в динамике менять реализацию.Подсказка: "Всякую задачу можно решить, введя еще одну косвенность".14. (*3.5) Определите класс Oper, содержащий идентификатор (некоторого подходящего типа) иоперацию (некоторый указатель на функцию). Определите класс cat_object, содержащий списокобъектов Oper и объект типа void*.
Задайте в классе cat_object операции: add_oper(), котораядобавляет объект к списку; remove_oper(id), которая удаляет из списка объект Oper cидентификатором id; operator() (id,arg), которая вызывает функцию из объекта Oper cидентификатором id. Реализуйте с помощью класса cat_object стек объектов Oper. Напишитенебольшую программу, работающую с этими классами.15. (*3) Определите шаблон типа Object, служащий базовым классом для cat_object.
С помощью Objectреализуйте стек для объектов класса String. Напишите небольшую программу, использующую этотшаблон типа.16. (*3) Определите вариант класса Object под именем Class, в котором объекты с одинаковымидентификатором имеют общий список операций. Напишите небольшую программу, использующуюэтот шаблон типа.17. (*3) Определите шаблон типа Stack, который задает традиционный и надежный интерфейс состеком, реализуемым объектом шаблона типа Object. Сравните это определение стека с классами,задающими стек, из предыдущих упражнений. Напишите небольшую программу, использующуюэтот шаблон типа.369.