|
|||
Работа № 6. Программирование шаблона классовЗадание к работе Общая постановка. Программа должна содержать: · базовый класс Х, включающий два элемента х1, х2 типа int, · конструктор с параметрами для создания объектов в динамической области памяти, · деструктор, · виртуальные методы просмотра текущего состояния и переустановки объектов базового класса в новое состояние. · производный класс У, включающий один элемент у типа int, · конструктор с параметрами и списком инициализаторов, передающий данные конструктору базового класса, · переопределенные методы просмотра текущего состояния объектов и их переустановки в новое состояние.
Варианты заданий Создать в производном классе метод Run, определяющий: 1. Сумму компонент классов 2. Произведение компонент классов 3. Сумму квадратов компонент классов 4. Значение х1+х2 – у 5. Значение (х1+х2)/у 6. Значение (х1+х2)*у 7. Значение х1*у+х2 8. Значение х1+х2*у 9. Произведение квадратов компонент класса 10. Значение х1*х2+у 11. Значение х1*х2/у 12. Значение х1*х2-у 13. Значение (x1-x2)*y 14. Значение (x1-x2)/y
Контрольные вопросы 1. Что такое наследование, одиночное наследование, множественное наследование? 2. Какие объекты базового класса наследуются в производном, а какие нет? 3. На примере своей программы поясните механизм позднего связывания. 4. В каком случае С++ проигнорирует механизм виртуальных функций?
Работа № 6. Программирование шаблона классов
Теоретические сведения Задание к работе Варианты заданий Контрольные вопросы
Цель работы – изучить приемы создания и использования шаблонов классов.
Теоретические сведения Достаточно часто встречаются классы, объекты которых должны содержать элементы данных произвольного типа (в том смысле, что их тип определяется отдельно для каждого конкретного объекта). В качестве примера можно привести любую структуру данных (массив указателей, массив, список, дерево). Для этого в С++ предлагаются средства, позволяющие определить некоторое множество идентичных классов с параметризованным типом внутренних элементов. Они представляют собой особого вида заготовку класса, в которой в виде параметра задан тип (класс) входящих в него внутренних элементов данных. При создании конкретного объекта необходимо дополнительно указать и конкретный тип внутренних элементов в качестве фактического параметра. Создание объекта сопровождается созданием соответствующего конкретного класса для типа, заданного в виде параметра. Принятый в С++ способ определения множества классов с параметризованным внутренним типом данных (иначе, макроопределение) называется шаблоном (template).
// < class T> - параметр шаблона - класс " T", внутренний тип данных
vector< int> a;
class vector< int>
// параметр шаблона - класс " T", внутренний тип данных
int* vector< int>:: operator[](int n)
|
|||
|