Шаблони в c
Шаблони призначені для швидкої генерації нових класів або функцій мають однаковий функціонал. Іноді шаблони класів і функцій називають узагальненими або родовими класами і функціями.
Як параметри шаблону виступають самі типи, і іноді значення зазначених типів.
Шаблони функцій генеруються автоматично за типами їх аргументів, для класів необхідно явно вказати параметри шаблону при створенні об'єкта.
Методи класів також можуть бути шаблонами. Методи шаблону класу вже є шаблонами.
визначення шаблонів
Шаблони визначаються ключовим словом, за яким в кутових дужках перераховуються параметри шаблону. Далі слід звичайне визначення об'єкта шаблону, тобто функція, метод або класу. Якщо параметром шаблона є тип, то він визначається через ключове слово typename. Параметри шаблону функції обов'язково повинні використовуватися в описі аргументів.
використання шаблонів
Шаблон використовується як звичайна функція або клас. В останньому випадку, після імені в кутових дужках вказуються значення параметрів шаблону, якщо вони не задані за замовчуванням. Нижче наведено приклад використання певних вище шаблонів.
заміщення шаблонів
Якщо для якихось типів все ж внутрішній функціонал повинен зміниться, то можна визначити інший шаблон з таким же ім'ям, уточнивши типи або вказавши конкретні значення параметрів. Наприклад, для наведеного вище класу Arrayn, нижче визначені два заміщають шаблону. Для стислості це порожні класи з одним методом, що дозволяє визначити який саме шаблон використовується.
Для шаблонів функцій замість заміщення можна скористатися перевантаженням функцій.
шаблон як параметр шаблону
Якщо в якості параметра шаблона використовується інший шаблон, то вкладені кутові дужки повинні бути розділені пробілами від оточуючих кутових дужок.
У різних компіляторів можуть бути свої особливості при роботі з шаблонами.