Понедельник, 07.10.2024, 02:28
Приветствую Вас Гость | RSS
Главная | Шаблоны функций | Регистрация | Вход
Языки Программирования (adsbygoogle = window.adsbygoogle || []).push({});
Форма входа
Меню сайта

Календарь
«  Октябрь 2024  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

Наш опрос
Оцените мой сайт
Всего ответов: 101

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 2
    Гостей: 2
    Пользователей: 0

    reklama

    Шаблоны функций

     
     

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


    Copyright MyCorp © 2024
    Бесплатный хостинг uCoz