83
все имена параметров должны быть разные, и обязательно перед каждым именем должно стоять слово – class;
4) все параметры шаблона обязательно должны быть использованы в спецификации параметров функции.
Пример неправильного определения шаблона:
template<class T1,classT2,classT3>
T3 f ( T1 a, T2 b ) {T3 c;… } //ошибка!
Пример правильного определения шаблона функций обменивающих значения параметров:
template <class R> void swap ( R&x, R&y) {R t= x; x=y; y=t;}
Далее, если в программе встретится фрагмент : double k= 3.7, n= 7.3;
swap(k, n);
компилятор на основе шаблона сформирует определение функции: void swap ( double&x, double&y)
{double t=x; x=y; y=t;}
Затем будет выполнено обращение к ней и значения переменных k и n поменяются местами.
Шаблоны служат для автоматического формирования конкретных определений функций по тем вызовам, которые транслятор обнаруживает в тексте программы. В зависимости от вызовов создает определения функций обрабатывающих данные различных типов.
ЛИТЕРАТУРА
1.Страуструп Б. Язык программирования С++. – М.: Невский Диалект – БИНОМ, 1999 - 991 с.
2.Подбельский В.В. Стандартный Си++: учебное пособие – М.: Финансы
истатистика, 2008, 688 с.
3.Подбельский В.В. Язык Си++. – М.: Финансы и статистика, 2000, 560 с.
4.Климова Л.М. Основы практического программирования на языке С++.
–М.: Приор, 2000. - 454 с.
5.Страуструп Б. Дизайн и эволюция языка С++.- М.:ДМК Пресс, 2000 -
488 с.
6.Подбельский В.В Программирование на языке СИ: учебное пособие – М.: Финансы и статистика, 2003, 600 с.
7.Романов Е.Л. Практикум по программированию на языке С++: учебное пособие – СПб.: Петербург, 2004.- 432 с.
84
СОДЕРЖАНИЕ
1. Раздел 1. Базовые понятия языка C++ ……………………………………… 3
1.1.Введение в C++…………………………………………………………….. 3
1.2.Лексические основы языка………………………………………………….. 12
1.3.Представление данных………………………………………………………. 27
1.4.Объекты программы и их атрибуты………………………………………… 32
1.5.Выражения и преобразования типов……………………………….............. 37
1.6.Операторы языка C++……………………………………………….............. 39
Раздел 2. Адреса, указатели, ссылки, массивы…………………………………. 46
2.1.Указатели и адреса объектов………………………………………............... 46
2.2.Объявление указателей……………………………………………………… 49
2.3.Типы указателей и операции над ними…………………………………….. 50
2.4.Ссылки………………………………………………………………………... 53
2.5.Массивы………………………………………………………………………. 54
2.6.Массивы и указатели………………………………………………………… 57
2.7.Создание динамических массивов………………………………………….. 61
Раздел 3. Функции………………………………………………………………… 63
3.1.Определение, описание и вызовы функций………………………………... 63
3.2.Классификация формальных параметров………………………………….. 68
3.3.Результат функции, возвращаемый с помощью оператора return…............ 72
3.4.Указатели на функции………………………………………………………. 75
3.5.Рекурсивные функции………………………………………………………. 80
3.6.Перегрузка функций. Шаблоны функций…………………………………. 81
ЛИТЕРАТУРА……………………………………………………………………. 83