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

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

Восстановить пароль Регистрация
 
Antosha
0 / 0 / 0
Регистрация: 23.06.2014
Сообщений: 108
18.08.2014, 22:34     Что такое шаблоны функций? #1
Люди обясните пожалуйста шаблоны функций

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

C++ Шаблоны функций
C++ Шаблоны функций c++
Шаблоны функций C++
C++ Что такое переопределение функций
C++ Что такое шаблоны в C++?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 212
Записей в блоге: 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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.08.2014, 23:41     Что такое шаблоны функций? #4
Цитата Сообщение от EfimKR Посмотреть сообщение
Если параметр был обьявлен в угловых скобках, он обязательно должен фигурировать в передаваемых в функцию параметрах.
temlate <class T> int func(int a) - ошибка!
Чего? А с каких это пор я не могу вызвать функцию func<double> например? То, что вы написали, это определение шаблонного параметра из аргумента, однако никто не запрещает указывать аргумент явно, при вызове.
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 212
Записей в блоге: 1
19.08.2014, 00:16     Что такое шаблоны функций? #5
ForEveR, я имел ввиду при объявлении прототипа.
DrOffset
6461 / 3835 / 886
Регистрация: 30.01.2014
Сообщений: 6,630
19.08.2014, 00:25     Что такое шаблоны функций? #6
Цитата Сообщение от ForEveR Посмотреть сообщение
Если параметр был обьявлен в угловых скобках, он обязательно должен фигурировать в передаваемых в функцию параметрах.
temlate <class T> int func(int a) - ошибка!
Это не так.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.08.2014, 09:38     Что такое шаблоны функций? #7
EfimKR, И? Это все равно не ошибка, а вполне нормальный код.
DrOffset, Не то сообщение процитировали.)
DrOffset
19.08.2014, 09:41
  #8

Не по теме:

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

EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 212
Записей в блоге: 1
19.08.2014, 09:58     Что такое шаблоны функций? #9
DrOffset, ForEveR, я ошибся при пояснении. Имел ввиду, если объявить шаблон вот так:
temlate <class T> int func(int a), то компилятор выдаст ошибку.
Убежденный
Системный программист
 Аватар для Убежденный
14216 / 6231 / 988
Регистрация: 02.05.2013
Сообщений: 10,390
Завершенные тесты: 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
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 212
Записей в блоге: 1
19.08.2014, 10:02     Что такое шаблоны функций? #11
Убежденный, а без <bool>?
Убежденный
Системный программист
 Аватар для Убежденный
14216 / 6231 / 988
Регистрация: 02.05.2013
Сообщений: 10,390
Завершенные тесты: 1
19.08.2014, 10:05     Что такое шаблоны функций? #12
Ну при вызове, понятное дело, будет ошибка, ибо компилятор
не сможет вывести правильный тип. Но исходное утверждение было другим.

Вообще, не думай, что я придираюсь, отнюдь нет
Просто в таких вещах должна быть точность.
krv
71 / 51 / 11
Регистрация: 10.07.2014
Сообщений: 328
19.08.2014, 11:10     Что такое шаблоны функций? #13
Объяснение понятное, но я так и не придумал ни разу нормального примера использования шаблонов, кроме примитивных, везде фигурируемых "арифметическая операция над любым типом".
Кто покажет или расскажет на словах ситуацию, где шаблон лучшее, а лучше - единственное решение.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
19.08.2014, 11:17     Что такое шаблоны функций? #14
krv, STL
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 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++
В этой части кода происходит объявление функций? Что такое void? Что в скобках? C++
C++ Шаблоны функций

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

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

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

Текущее время: 19:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru