Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Что лучше использовать?


Автор: Medved 21.11.2004, 00:01
Собственно сабж. Сейчас вплотную принялся за С++. Вот по мере изучения, кое-где и вспоминания, возникают вопросы.

Под словом "лучше" подразумевается не то, что допустим шаблоны forever, а перегрузка ацтой, или наоборот.
Понятно конечно что существуют обстоятельства, когда оправдано использовать одно, и отказываться от другого и опять же наоборот.

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

Заранее благодарен!

Автор: chipset 21.11.2004, 00:12
ИМХО шаблоны нужно в тех случаях когда неизвестно какие типы будут использоваться или кол-во типов неразумно большое (при сотне типов ты не будешь перегрузку делать).
Перегрузку имхо следует использовать в тех случаях когда у типов которые предполагается использовать, разные интерфейсы. При это типов которые ты предполагаешь юзать в классе немного, штук пять-шесть. Если тебе надо делать перегрузку большего числа то ИМХО это уже не очень хорошая проектировка.

Автор: sergejzr 21.11.2004, 00:24
Цитата(chipset @ 20.11.2004, 23:12)
ИМХО шаблоны нужно в тех случаях когда неизвестно какие типы будут использоваться или кол-во типов неразумно большое (при сотне типов ты не будешь перегрузку делать).

Или, если для любого типа обработка в функции будет одинаковой smile
например
Код

template<class T>
void example(T &t)
{
 //тут пофигу, какой тип. Обработка одинакова
 cin>>t;
 cout<<t;
}


Также шаблоны прекрасно используются для алгоритмов, где тип не важен. Например сортировка.

Также перегрузку можно использовать вместе с шаблонами.
Например если для всех типов, кроме флоата обарботка одинакова, то делаем шаблон, а для флоата перегружаем.

Короче делаем то, что удобней, а самое главное так, чтобы через месяц ещё можно было прочесть и понять код smile

Автор: chipset 21.11.2004, 00:31
Цитата(sergej @ 20.11.2004, 13:24)
Или, если для любого типа обработка в функции будет одинаковой
например


А если бы надо было допустим для типа A просто вывести значение обьекта а для типа B ещё выполнить функцию которая переведёт значение обьекта в нормальный то лучше перегрузку. smile

Автор: Medved 21.11.2004, 01:09
Спасибо!

Автор: bel_nikita 21.11.2004, 03:00
так же не следует забывать, что шаблоны не компилируются в какой-то один объект, способный обрабатывать любой тип данных. Вместо этого из шаблона генерируются различные объекты для каждого типа, для которого применяется шаблон. Т.е. хочу сказать, что вместо 20 Кб исходника, можно ( при не разумном использовании ) получить 30 Кб .

З.Ы.: шаблоны следует использовать для контейнеров и алгоритмов

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)