Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Программирование – 1 курс весна 2022 – 10 занятие

Программирование – 1 курс весна 2022 – 10 занятие

ТиМПИ

May 03, 2022
Tweet

More Decks by ТиМПИ

Other Decks in Programming

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide