Шаблоны функций Приветствую! Сегодня поговорим о шаблонах, ибо народъ сайта VBBook.ru не захотел отвечать мне, что они хотят узнать о прекрасном и мощном языке программирования C++. Для некоторых сия статья может показаться слишком сложной, однако знание о шаблонах очень пригодится при написании больших приложений. Писать буду в Visual Studio 2010. Код шаблона таков: template <typename T>
inline T const& max(T const& a, T const& b)
{
return a < b ? a : b
}
У нашей шаблонной функции 2 параметра: a и b. Тип оных определен как шаблонный параметр T. Синтаксис их следующий: template <comma-separated-list-of-parameters>
Вместо, кстати, typename, можно использовать слово class. Раньше так и делали, ибо typename появился позже. Слово struct в данном контексте неприменимо. Пример с использованием шаблонов (на базе обыкновенной функции max()): int main(int argc, char ** argv)
{
int i = 42;
std::cout << "max(7,i): " << ::max(7,i) << std::endl;
double f1 = 3.4;
double f2 = -6.7;
std::cout << "max(f1,f2): " << ::max(f1,f2) << std::endl;
std::string s1 = "synchrophasotron";
std::string s2 = "math";
std::cout << "max(s1,s2): " << ::max(s1,s2) << std::endl;
}
max() вызывается в количестве 3 раза для: int, double и string соответственно. Каждый раз наша функция вызывалась с префиксом ::. При компиляции для каждого вызова будет сгенерирована отдельная функция. На этом все. Можете шаблонить свой код. Отдельно хочу поблагодарить администрацию за то, что прислушались ко мне и добавили редактор HTML-кода.
Урок 6 - Сфера в OpenGL
|