Шаблоны функций
Приветствую! Сегодня поговорим о шаблонах, ибо народъ сайта 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