Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по C/C++

  Все выпуски  

Уроки по C/C++


Информационный Канал Subscribe.Ru


C/C++. Уроки с сайта http://progs.biz

Рассылка №17

C/C++. Урок 22. Шаблоны функций.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 22. Шаблоны функций.

Паппас К., Мюррей У. Эффективная работа: Visual C++.NET

Заказать на Озоне
Рассылки сайта progs.biz через subscribe.ru
Delphi. Уроки
Delphi. Уроки. Уровень - от начинающего до профи. Каждый урок рассчитан на 15 - 20 минут. Темы - библиотека VCL, создание компонентов, FAQ, работа с базами данных (InterBase и др).

C/C++. Урок 22. Шаблоны функций

Шаблоны служат для ситуции, когда у нас есть разные типы данных, с которыми мы должны работать по одному, не зависящему от этих типов данных, алгоритму. Например, метод сортировки массива не зависит от типов данных - такой алгоритм будет одинаков и для, например, чисел типа int и для чисел типа float.

Приведем пример использования шаблона.

Вот код для простейшего щаблона функции, которая из двух передаваемых в нее параметров возвращает максимальный:

#include <iostream.h>
//Объявление шаблона функции.
template <class T>
T max(T a, T b)
{
    if(a>b)
    {
        return a;
    }
    else
    {
        return b;
    }
}
void main()
{
    //Использование шаблона функции для целых.
    int x = 45, y = 32;
    cout<<max(x, y)<<"\n"; //Выведется 45.
    //Использование шаблона функции для вещественных.
    float s = 4.18, t = 34.08;
    cout<<max(s, t)<<"\n"; //Выведется 34.08.

}

Обратите внимание на синтаксис. Сначала мы пишем ключевое слово template и задаем формальный тип T (T - это просто произвольное имя):

template <class T>
 ...

Далее мы пишем непосредственно функцию, причем в качестве типа параметров и возвращаемого значения пишем введенный ранее формальный тип T:

T max(T a, T b)
    ...

Разумеется, количество параметров может быть любое и не все из них должны иметь тип T. То же относится и к типу возвращаемого значения - в нашем случае это тот же тип T, но в принципе тип может быть любой, хоть void.

Также обратите внимание, что заданием формального параметра и объявлением класса не должно быть никаких операторов.

Теперь пара слов о использовании шаблона. При использовании мы просто пишем имя функции (в нашем случае это max) с параметрами конкретных типов (int и float в нашем примере). Компилятор в этом месте сам сгенерирует на основании этого шаблона функцию с параметрами конкретных типов.

Шаблоны существую не только для функций, но и для классов. Такие шаблоны мы рассмотрим позже.

Наверх

PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка .NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru
Copyright Алексеев Игорь, 2002-2003
Copyright сайт progs.biz, 2002-2003
Распространение материалов без разрешения владельцев авторских прав запрещено.


BannerDrive.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное