Лекция_6_Шаблоны_классов.ppt
- Количество слайдов: 24
Шаблоны классов
1. Обобщённые функции Шаблон функции (обобщённая функция) – это функция, в которую тип данных передаётся в виде параметра (обобщённый тип). В обобщенных функциях может использоваться несколько обобщённых типов. Например:
2. Перегрузка обобщённых функций Для обобщённых функций можно выполнять явную перегрузку (явная специализация). При этом создаётся отдельный вариант этой функции с явным указанием типов аргументов и результата функции. Пример явной специализации:
При вызове обобщённой функции в данном программе реализуется один алгоритм кроме случая, когда аргументы имеют тип int. В этом случае вызывается явная специализация обобщённой функции. Обобщённую функцию можно перегружать, например:
3. Шаблоны классов В С++ можно создавать классы, в которые тип данных передаётся как формальный параметр. Такие классы называются обобщёнными классами или шаблонами классов. Синтаксис объявления обобщённого класса: template <class X, class Y, …> class Имя_класса {. . . };
При создании объекта My. Class тип для X указывается в угловых скобках в явном виде.
4. Типы по умолчанию и явная специализация класса В некоторых случаях удобно использовать значения обобщённых типов для обобщённой функции по умолчанию. Если обобщённый тип явно не указан, то используется тип по умолчанию. Например:
Для обобщённых классов также можно создавать явные специализации. Синтаксис объявления явной специализации: template <> class Имя_класса <тип 1, тип 2, . . > {. . . };
Пример создания явной специализации класса:
Явная специализация создаётся для случая, когда в качестве обобщённого типа данных используется int.
При создании обобщённых классов может использоваться сразу несколько обобщенных типов данных и стандартных типов данных. Например:
В прототипе обобщённого класса My. Class указны два обобщённых типа Х и Y и переменная n стандартного типа int. Значения элементов массивов xarray и yarray инструкциями (X) и (Y) приводятся к соответствующим типам.
5. Примеры решения задач Задача 1 Создать обобщённую функцию, с помощью которой можно вычислять значение экспоненты от действительного и комплексного аргумента по формуле:
Задача 2 Пример программы с наследованием обобщенного класса.
При описании механизма наследования и при передаче аргумента конструктору базового класса указывается формальный параметр типа.
Лекция_6_Шаблоны_классов.ppt