Реферат: Методы программирования в C++
1) Компилятор пытается найти функцию, параметры которой точно соответствуют параметрам вызова.
Если это не удалось, то
2) компилятор пытается найти шаблон, из которого можно сгенерировать функцию с указанными параметрами.
Если и это не удалось, то
3) компилятор рассматривает имеющиеся функции на предмет преобразования типов параметров.
Шаблоны классов
Шаблоны классов задают обобщенные определения семейств классов, использующих произвольные типы и константы. Из шаблона класса компилятор может генерировать объекты с определенными типами и константами.
template <списокаргументов>
class NameClass
{ … }
Список аргументов состоит в общем случае из конструкций
< class Ид 1,…
class Ид n ,
тип Ид k… >
Идентификаторы Ид 1 - Ид n используются при определении параметризованных типов.
Идентификатор Ид k используется для задания констант.
Объекты шаблонного класса создаются следующим образом:
NameClass <int> A (список инициализации)
Будет создан объект, где формальные типы будут заменены типом int. Список аргументов модифицируется следующим образом: аргументы вида classИдентификатор заменяется конкретным типом (int, double и т.д.), в том числе здесь можно использовать и классы.
Аргумент вида тип Идентификатор заменяется соответствующей константой.
Шаблоны классов специфицировать нельзя.
Пример использования шаблонов класса:
template <class T>
class TSteck
{int n; T *item;
public:
TSteck(int S=10)
{n=0; item=new T[S];}
void push(T t);