Slide 1

Slide 1 text

03 мая 2022 [email protected] Федор Витальевич Бушмелев Шаблоны и обобщённое программирование

Slide 2

Slide 2 text

2/16 2/16 А в чём проблема? Вы Заказчик Заказчик: — Хочу сумматор! Вы: — Не вопрос! Всё будет!

Slide 3

Slide 3 text

3/16 3/16 Сумматор целых чисел Что может быть проще? Заказчик Ой! Всё супер! А можно еще и для вещественных чисел?

Slide 4

Slide 4 text

4/16 4/16 Сумматоры целых и вещестенных чисел Всё еще не проблема…

Slide 5

Slide 5 text

5/16 5/16 Сумматоры еще и … Знаете, мне бы еще double с int сложить!

Slide 6

Slide 6 text

6/16 6/16 Проблемы? Знаете, мне бы еще doble с int сложить! • Значительные временные затраты • Высокие темпы роста кода • Работа с требованиями заказчика • Ведение документации

Slide 7

Slide 7 text

7/16 7/16 Решение: используем шаблон функции Ключевое слово template <>

Slide 8

Slide 8 text

8/16 8/16 Решение: шаблон для примера 3 Вопрос: какое ключевое слово для типа использовать? Typename или class?

Slide 9

Slide 9 text

9/16 9/16 Шаблон класса 1/2

Slide 10

Slide 10 text

10/16 10/16 Шаблон класса 2/2

Slide 11

Slide 11 text

11/16 11/16 Специализация шаблона класса 1/2

Slide 12

Slide 12 text

12/16 12/16 Специализация шаблона класса 2/2

Slide 13

Slide 13 text

13/16 13/16 Наследование шаблона класса 1/2

Slide 14

Slide 14 text

14/16 14/16 Наследование шаблона класса 2/2

Slide 15

Slide 15 text

15/16 15/16 Итоги • Так что же такое «Обобщенное программирование»? Обобщённое программирование (generic programming) — парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание. • Есть ли отличие между шаблонами (template) и дженериками? Шаблоны (templates) в С++ — частный случай обобщённых типов (generic types). Приводит к увеличению объема программы, т.к. при использовании создает полные экземпляры структур для указанного типа данных, в т.ч. и пользовательского.

Slide 16

Slide 16 text

03 мая 2022 [email protected] Федор Витальевич Бушмелев Шаблоны и обобщённое программирование