Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Antosha
0 / 0 / 0
Регистрация: 23.06.2014
Сообщений: 110
#1

Что такое шаблоны функций? - C++

18.08.2014, 22:34. Просмотров 442. Ответов 15
Метки нет (Все метки)

Люди обясните пожалуйста шаблоны функций

На заннятиях чучуть провтыкал помогите вы буду благодарен!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2014, 22:34     Что такое шаблоны функций?
Посмотрите здесь:

Что такое шаблоны в C++? - C++
Что такое шаблоны и для чего они нужны? Если не трудно приведите показательный пример применения шаблона.

Что такое переопределение функций - C++
По заданию нужно в программе применить перепределение функций. Поюзал- везде ссылаются на перегрузку функций. Так переопределение функций и...

Шаблоны функций - C++
Всем доброго времени суток. Встала такая проблема: //.h template <class T> T randf( T min, T max ); void _test(); //.cpp ...

Шаблоны функций - C++
Путем перестановки элементов квадратной натуральной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу,...

Шаблоны функций - C++
Надо в этом задании добавить "шаблоны ф-ций", помогите пжл Задачи надо переписывать в текст сообщения!!! Одно сообщение - одна...

шаблоны функций на С++ - C++
помогите с задачей условие таково. Дан одна мерный массив состоящий из целых чисел нужно найти произвидение всех отрицательных элементов и...

Шаблоны функций - C++
Добрый вечер! У меня возникли трудности с шаблонами функций. Вот код с шаблоном template <class type,class ttype> ttype...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
18.08.2014, 22:45     Что такое шаблоны функций? #2
temlate <class T> T func(T a); - вот припер прототипа шаблона.
Данная функция принимает параметр типа Т и такой же возвращает. Т это конкретный параметр который передается в функцию. При этом создается копия такой функции для конкретного параметра.
Например func(5) - вместо Т везде подставляется int.
func(5.25) - вместо Т везде подставляется double.
func('F') - вместо Т везде подставляетсяchar.
Вместо ключевого слова class может использоваться typename.
Если параметр был обьявлен в угловых скобках, он обязательно должен фигурировать в передаваемых в функцию параметрах.
temlate <class T> int func(int a) - ошибка!
IrineK
Заблокирован
18.08.2014, 22:49     Что такое шаблоны функций? #3
Стэнли Липпман о шаблонах функций
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
18.08.2014, 23:41     Что такое шаблоны функций? #4
Цитата Сообщение от EfimKR Посмотреть сообщение
Если параметр был обьявлен в угловых скобках, он обязательно должен фигурировать в передаваемых в функцию параметрах.
temlate <class T> int func(int a) - ошибка!
Чего? А с каких это пор я не могу вызвать функцию func<double> например? То, что вы написали, это определение шаблонного параметра из аргумента, однако никто не запрещает указывать аргумент явно, при вызове.
EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
19.08.2014, 00:16     Что такое шаблоны функций? #5
ForEveR, я имел ввиду при объявлении прототипа.
DrOffset
6925 / 4118 / 942
Регистрация: 30.01.2014
Сообщений: 6,915
19.08.2014, 00:25     Что такое шаблоны функций? #6
Цитата Сообщение от ForEveR Посмотреть сообщение
Если параметр был обьявлен в угловых скобках, он обязательно должен фигурировать в передаваемых в функцию параметрах.
temlate <class T> int func(int a) - ошибка!
Это не так.
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
19.08.2014, 09:38     Что такое шаблоны функций? #7
EfimKR, И? Это все равно не ошибка, а вполне нормальный код.
DrOffset, Не то сообщение процитировали.)
DrOffset
19.08.2014, 09:41
  #8

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
Не то сообщение процитировали
Точно, извини. Только сообщение то, не тот автор Но, я думаю, ты все равно понял, что я имел в виду.

EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
19.08.2014, 09:58     Что такое шаблоны функций? #9
DrOffset, ForEveR, я ошибся при пояснении. Имел ввиду, если объявить шаблон вот так:
temlate <class T> int func(int a), то компилятор выдаст ошибку.
Убежденный
Системный программист
Эксперт С++
15248 / 6880 / 1092
Регистрация: 02.05.2013
Сообщений: 11,261
Завершенные тесты: 1
19.08.2014, 10:00     Что такое шаблоны функций? #10
http://codepad.org/0dbS21Fs
C++
1
2
3
4
5
6
7
8
9
10
template <typename T>
void func(int a)
{
}
 
int main()
{
    func<bool>(123);
    return 0;
}
Никаких ошибок
EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
19.08.2014, 10:02     Что такое шаблоны функций? #11
Убежденный, а без <bool>?
Убежденный
Системный программист
Эксперт С++
15248 / 6880 / 1092
Регистрация: 02.05.2013
Сообщений: 11,261
Завершенные тесты: 1
19.08.2014, 10:05     Что такое шаблоны функций? #12
Ну при вызове, понятное дело, будет ошибка, ибо компилятор
не сможет вывести правильный тип. Но исходное утверждение было другим.

Вообще, не думай, что я придираюсь, отнюдь нет
Просто в таких вещах должна быть точность.
krv
72 / 52 / 11
Регистрация: 10.07.2014
Сообщений: 328
19.08.2014, 11:10     Что такое шаблоны функций? #13
Объяснение понятное, но я так и не придумал ни разу нормального примера использования шаблонов, кроме примитивных, везде фигурируемых "арифметическая операция над любым типом".
Кто покажет или расскажет на словах ситуацию, где шаблон лучшее, а лучше - единственное решение.
MrCold
853 / 751 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
19.08.2014, 11:17     Что такое шаблоны функций? #14
krv, STL
John Prick
773 / 706 / 129
Регистрация: 27.07.2012
Сообщений: 2,022
Завершенные тесты: 3
19.08.2014, 11:17     Что такое шаблоны функций? #15
Цитата Сообщение от krv Посмотреть сообщение
Кто покажет или расскажет на словах ситуацию, где шаблон лучшее, а лучше - единственное решение.
Единственное решение - вообще весьма редкий случай. Ну а насчёт лучших решений - STL, например. Standart Template Library, название говорит само за себя. Например, копирование оттуда:
C++
1
2
3
4
5
6
7
template <class II, class OI>
OI copy(II first, II last, OI out)
{
    for (; first < last; ++first, ++out)
        *out = *first;
    return out;
}
Эта функция подойдёт для любых типов, поддерживающих операции <, ++ и *. Самый простой - указатель, более сложный - различные классы итераторов. Если бы не было шаблонов, пришлось бы дублировать эту функцию для каждого типа, для которого осуществлялось бы копирование. Т.е. для int[], double[], char*, string::iterator и т.д. разные функции, которые отличались бы, по сути, только названиями типов в заголовке.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2014, 17:01     Что такое шаблоны функций?
Еще ссылки по теме:

Шаблоны функций - C++
Написала прогу на шаблоны функций. не могу понять где ошибка // функции.cpp: определяет точку входа для консольного приложения. // ...

Шаблоны функций - C++
не совсем понимаю, как работают шаблоны функций , в учебнике только дан пример и не объяснено ниче( САма программа готовая есть, надо...

Шаблоны функций - C++
Добрый вечер! less.h #pragma once #include &quot;StdAfx.h&quot; //preconditions: //defined operator&lt; template &lt;typename elemType&gt; ...

Шаблоны функций - C++
Всех приветствую! народ помогите задали лабораторку, а в с++ я только новичок подскажите как сделать следующее:

Шаблоны функций C++ - C++
Привет ребят. Мб кто подскажет, у меня последняя часть кода &quot;максимальное из чисел, встречающихся в заданной матрице более одного раза&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
3042 / 1687 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
19.08.2014, 17:01     Что такое шаблоны функций? #16
Цитата Сообщение от krv Посмотреть сообщение
но я так и не придумал ни разу нормального примера использования шаблонов, кроме примитивных
Цитата Сообщение от John Prick Посмотреть сообщение
Например, копирование оттуда
Ну да, Степанов только после появления шаблонов С++ смог реализовать свою мечту по написанию обобщенных алгоритмов, впоследствии стандартизованных в STL.

Добавлено через 1 минуту
Ну и Александреску почитайте, там примеры далеко не примитивные.
Yandex
Объявления
19.08.2014, 17:01     Что такое шаблоны функций?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru