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

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

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

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

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

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

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

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

Не по теме:

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

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

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

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

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

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

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