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

Можете обяснить зачем использовать template<> - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Programmer.
Прогер
 Аватар для Programmer.
631 / 262 / 7
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
06.03.2012, 06:15     Можете обяснить зачем использовать template<> #1
Привет всем... у меня такой вопрос:

Что такое template я уже как то понял, но...

Зачем и в какых ситуациях исползовать template<> ?

Спасибо заранее...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2012, 06:15     Можете обяснить зачем использовать template<>
Посмотрите здесь:

C++ Зачем нужен массив указателей на функцию и как его использовать?
Ошибки: 1) use of class template requires template argument list 2) 'T' : undeclared identifier C++
Зачем использовать динамическую память? C++
насчет перечисления(зачем я объявляю переменную в перечислении? Приведите примеры где удобно использовать перечисление?) C++
C++ MSVC и template template classes
Ошибка компиляции: template-id does not match any template declaration C++
Зачем используют конструкцию в длинных ветвлениях else if, если можно просто использовать один if C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gumi250
 Аватар для gumi250
422 / 389 / 33
Регистрация: 06.02.2012
Сообщений: 1,334
06.03.2012, 06:37     Можете обяснить зачем использовать template<> #2
Чтобы не переписывать одну и туже ф-цию(класс) для всех возможных типов. Например без шаблонов будет так
C++
1
2
3
4
5
6
7
8
9
int Sum(int a, int b)
{ return a+b;
};
long Sum(long a, long b)
{ return a+b;
};
double Sum(double a, double b)
{ return a+b;
};
Здесь фактически одно и тоже вы делаете дважды, трижды, четырежды и т.д для всех возможных типов, и все равно все типы не перепишите.
А с шаблонами для все типов сразу.
C++
1
2
3
template<class T> T Sum(T a, T b)
{ return a+b;
}
Programmer.
Прогер
 Аватар для Programmer.
631 / 262 / 7
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
06.03.2012, 09:56  [ТС]     Можете обяснить зачем использовать template<> #3
gumi250,
Спасибо огромное, а с классамы как он работает?
gumi250
 Аватар для gumi250
422 / 389 / 33
Регистрация: 06.02.2012
Сообщений: 1,334
06.03.2012, 10:06     Можете обяснить зачем использовать template<> #4
А примерно также например, без шаблонов:
C++
1
2
3
4
5
6
7
8
class TPointInt
{ int x,y;
  Set(int x_, int y_);
}
class TPointFloat
{ float x,y;
  Set(float x_, float y_);
}
А с шаблонами:
C++
1
2
3
4
template <class T> class MPoint
{ T x,y;
  Set(T x_, T y_);
}
Programmer.
Прогер
 Аватар для Programmer.
631 / 262 / 7
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
06.03.2012, 10:23  [ТС]     Можете обяснить зачем использовать template<> #5
gumi250,
Спасибо, а для чего на пример делаетса так:
C++
1
template <class T, int S, double J>
И как после обявление их, описать конструктор и деструктор?
И для чего привести столко переменных, если можно обявыть все в например
C++
1
template<typename T>
vxg
Модератор
 Аватар для vxg
2725 / 1736 / 172
Регистрация: 13.01.2012
Сообщений: 6,504
06.03.2012, 13:13     Можете обяснить зачем использовать template<> #6
Цитата Сообщение от Programmer. Посмотреть сообщение
И как после обявление их, описать конструктор и деструктор?
так
C++
1
2
3
4
5
6
7
8
template <class type>
class some_class
{
public:
    type data;
    some_class(type x): data(x) {}
    virtual ~some_class(void) {}
};
Цитата Сообщение от Programmer. Посмотреть сообщение
И для чего привести столко переменных, если можно обявыть все в например
нельзя, в первом случае у вас три параметра шаблона, а во втором - только один и весь добавочный функционал вам нужно будет реализовывать какими-то иными отличными от шаблона способами
gumi250
 Аватар для gumi250
422 / 389 / 33
Регистрация: 06.02.2012
Сообщений: 1,334
06.03.2012, 16:45     Можете обяснить зачем использовать template<> #7
Цитата Сообщение от Programmer. Посмотреть сообщение
gumi250,
Спасибо, а для чего на пример делаетса так:
C++
1
template <class T, int S, double J>
Никогда не пользовался этим, но если я не ошибаюсь, то через параметры шаблона можно передавать константы, могу ошибится в коде, но как то так:
C++
1
2
3
template <class T, int S> ckass TA
{ T A[S];
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2012, 21:37     Можете обяснить зачем использовать template<>
Еще ссылки по теме:

C++ Для чего нужны и зачем использовать smart-указатели?
'MyQueue' : use of class template requires template argument list C++
C++ Зачем учить указатели, если можно использовать вектор?
C++ В чем различие template <typename T> от template <class T> ?
C++ Зачем нужно использовать инициализаторы элемент-данных класса?

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

Или воспользуйтесь поиском по форуму:
Programmer.
Прогер
 Аватар для Programmer.
631 / 262 / 7
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
06.03.2012, 21:37  [ТС]     Можете обяснить зачем использовать template<> #8
gumi250,
vxg,
Понял, спасибо...
Yandex
Объявления
06.03.2012, 21:37     Можете обяснить зачем использовать template<>
Ответ Создать тему
Опции темы

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