Параметрами шаблонов могут быть: параметрытипы, параметры обычных типов, такие как int, и параметры-шаблоны. Естественно у шаблона может быть несколько параметров. Например:
template <class T, int i> class Buffer
{
T v[i];
int sz;
public:
Buffer(): sz(i) {};
…
};
Buffer<char, 127> cbuf;
Buffer<Record, 127> rbuf;
Передача размера в качестве аргумента шаблона Buffer позволяет его разработчику избежать использования лишней памяти. Аргумент шаблона может быть константным выражением, адресом объекта или функции с внешней компоновкой или неперегруженным указателем на член. Указатель, используемый в качестве аргумента шаблона, должен иметь форму &of, где of является именем объекта или функции, либо в форме f, где f является именем функции. Указатель на член должен быть в форме &X::of, где of является именем члена. В частности, строковый литерал не допустим в качестве аргумента шаблона. Целый аргумент должен быть константой:
void f(int i)
{
Buffer <int, i> box; /* ошибка: требуется констант-ное выражение */
}
И наоборот, параметр шаблона, не являющийся типом, является константой в теле шаблона, поэтому попытка изменить значения этого параметра явля-ется ошибкой.
Опубликовал Kest
August 30 2010 07:39:40 ·
0 Комментариев ·
5664 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.