Парадигмы программирования/Обобщенное программирование. Шаблоны классов.: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 20:
}
Хотя шаблоны предоставляют краткую форму записи участка кода, на самом деле их использование не сокращает исполнимый код, так как для каждого набора параметров компилятор создаёт отдельный экземпляр функции или класса.
 
Ошибки, связанные с использованием конкретных параметров шаблона, нельзя выявить до того, как шаблон использован.
=Специализация шаблонов=
Несколько напоминает перегрузку шаблонов ситуация, когда определяется обычная функция, имя которой совпадает с именем шаблона и список параметров которой соответствует шаблону с некоторым специфическим набором фактических типов. Такую функцию называют специализированной функцией шаблона. Этот прием применяют, когда для некоторого типа или набора типов общий шаблон работать не будет.
Когда компилятор встречает вызов какой-то функции, для его разрешения он следует такому алгоритму:
*Сначала ищется обычная функция с соответствующими параметрами.
*Если таковой не найдено, компилятор ищет шаблон, из которого можно было бы генерировать функцию с точным соответствием параметров.
*Если этого сделать невозможно, компилятор вновь рассматривает обычные функции на предмет возможных преобразований типа параметров.
Подобно шаблону функции, шаблон класса может быть специализирован для специфического набора его аргументов. Для этого нужно написать явные реализации тех или иных методов шаблона для конкретных типов.
 
===Исключения.Обработка исключений===
В языке С++ существует механизм обработки ошибочных ситуаций, называется обработка исключений(англ. exception handline).