Помогите разобраться с шаблонами

Начал разбираться с шаблонами, но что-то никак не укладывается в голове их смысл.
Вернее, в теории я понимаю, что из шаблона можно создать любой класс с нужными параметрами, встроенными или пользовательскими. НО! Ведь у каждого создаваемого класса есть СВОЕ тело, со своими методами и членами. И что для каждого нужно делать свой индивидуальный шаблон? Смысла не вижу.

Может я не так это понимаю?

Спасибо.

p.s. Разбор примеров из учебников ясности не прибавил. Там типа создается обычный класс и дальше определяется шаблон. К чему он там относится и что из этого шаблона там делается непонятно...

Рассматривай шаблоны как параметризованное определение функций (или классов). Роль параметра играет тип. В остальном — все как при определении обычных функций: при определении — формальный параметр (typename T), при инстанцировании шаблона — фактический параметр тип, существующий в программе.

Шаблоны — это метапрограммирование. Т.е. написание программы для компилятора С++ (который здесь выступает в роли интерпретатора) на некоем метаязыке (не С++!), результатом выполнения которой является программа на С++. (Во я загнул!))))

Из книги:

Например, ниже определен шаблон для функции с именем тах, которая возвращает большее из двух значений:

template<class Т> Т mах(Т а, Т b)

{ 
   if (а > b) return(а); 
   else return(b); 
}

Где написано. что шаблон для функции по имени тах?

что означает Т mах(Т а, Т b)
я так понял, что a и b это параметры для функций, которые будут создаваться из этого шаблона?

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.