Шаблоны - это параметризация класса.То есть вместо множества разных классов, таких как
class myclass_int
{
int x;
}
class myclass_double
{
double x;
}
и т. Д.
, если вы видите шаблон, единственное, что отличается, это используемый тип, SO,мы будем использовать абстрактный тип, называемый шаблоном, в качестве своего рода заполнителя:
class myclass_T
{
T x;
}
ЭТОТ КЛАСС НЕ ЕДИНЫЙ, а ВСЕ КОЛЛЕКЦИЯ.Если мы заменим T на int, мы получим первый класс, а T на двойной, мы получим второй.
Но когда мы создаем экземпляр myclass_T, мы должны затем указать, что на самом деле T (это в int, double и т. Д..)?
, поэтому мы определим этот параметризованный класс как
template <typename T>
class myclass
{
T x;
}
И используем T, поскольку он уже новый, каким он был на самом деле.
Этот один класс представляет всевозможные классы, которые вы могли бы составить, которые использовали определенные типы (я дал 2 экземпляра в начале).
Шаблоны просто упрощают определение таких классов.Это намного больше, чем это, но это основа того, почему они полезны.Способ думать о шаблонном классе не как о классе, а как о «суперклассе».То есть класс, который может принимать разные представления.
Это не сложная концепция, НО, если у вас нет большого опыта работы с oop, вы можете не понять, почему они полезны, и подуматьони делают вещи более сложными.Но как только вам придётся писать очень много похожих классов, которые отличаются только используемыми типами, вы поймете, почему они так полезны (на самом деле они достаточно мощные, потому что в конечном итоге способны делать намного больше).