Шаблоны C++
Sign in to saveAlso known as C++ template
средство языка C++ для кодирования обобщённых алгоритмов
Wikidata facts
- Subclass of
- language construct
- Part of
- C++
- Official name
- template
- Has use
- generic programming
Show 2 more facts
- described at URL
- en.cppreference.com/w/cpp/language/templates
- Stack Exchange tag
- stackoverflow.com/tags/templates
Sources (1)
via Wikidata · CC0
Article · Русский
Шабло́ны (англ. template) — средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию). В C++ возможно создание шаблонов функций и классов. Шаблоны позволяют создавать параметризованные классы и функции. Параметром может быть любой тип или значение одного из допустимых типов (целое число, enum, указатель на любой объект с глобально доступным именем, ссылка). Например, нам нужен какой-то класс: class SomeClass{ int SomeValue; int SomeArray[20]; ...}; Для одной конкретной цели мы можем использовать этот класс. Но, вдруг, цель немного изменилась, и нужен еще один класс. Теперь нужно 30 элементов массива SomeArray и вещественный тип SomeValue элементов SomeArray. Тогда мы можем абстрагироваться от конкретных типов и использовать шаблоны с параметрами. Синтаксис: в начале перед объявлением класса декларируем шаблон, то есть template и укажем параметры в угловых скобках. В нашем примере: template < int ArrayLength, typename SomeValueType > class SomeClass{ SomeValueType SomeValue; SomeValueType SomeArray[ ArrayLength ]; ...}; Тогда для первого случая (с целочисленным SomeValue и SomeArray в 20 элементов) пишем: SomeClass < 20, int > SomeVariable; для второго: SomeClass < 30, double > SomeVariable2; Хотя шаблоны предоставляют краткую форму записи участка кода, на самом деле их использование не сокращает исполняемый код, так как для каждого набора параметров компилятор создаёт отдельный экземпляр функции или класса. Как следствие, исчезает возможность совместного использования скомпилированного кода в рамках разделяемых библиотек.
Abstract from DBpedia / Wikipedia · CC BY-SA