Шаблоны и специализация
Введение
Шаблоны в C++ предоставляют мощный механизм для написания универсального кода, который может работать с различными типами данных. Специализация шаблонов позволяет адаптировать шаблонный код для конкретных типов, предоставляя специализированные реализации.
Шаблоны
Функции-шаблоны
Функции-шаблоны позволяют писать универсальные функции, которые могут принимать аргументы любого типа.
Пример функции-шаблона
Вывод
В этом примере функция add
является шаблоном, который может работать как с целыми числами, так и с числами с плавающей запятой.
Классы-шаблоны
Классы-шаблоны позволяют создавать классы, которые могут работать с различными типами данных.
Пример класса-шаблона
Вывод
В этом примере класс Pair
является шаблоном, который может хранить пары значений различных типов.
Специализация шаблонов
Полная специализация
Полная специализация позволяет определить реализацию шаблона для конкретного типа.
Пример полной специализации
Вывод
В этом примере MyClass
имеет общую реализацию и специализированную реализацию для типа int
.
Частичная специализация
Частичная специализация позволяет определить реализацию шаблона для частично конкретизированных типов.
Пример частичной специализации
Вывод
В этом примере MyClass
имеет общую реализацию и частично специализированную реализацию, когда второй параметр является int
.
Резюме
- Шаблоны позволяют создавать универсальные функции и классы, работающие с различными типами данных.
- Функции-шаблоны позволяют писать функции, принимающие аргументы любого типа.
- Классы-шаблоны позволяют создавать классы, которые могут работать с различными типами данных.
- Полная специализация позволяет определить реализацию шаблона для конкретного типа.
- Частичная специализация позволяет определить реализацию шаблона для частично конкретизированных типов.