Классы шаблонов в C ++ ... необходимый набор навыков? - PullRequest
1 голос
/ 13 ноября 2009

Я новичок в C ++ и мне интересно, сколько времени я должен потратить на изучение того, как реализовать шаблоны классов. Широко ли они используются в промышленности, или мне нужно быстро пройти через это?

Ответы [ 8 ]

8 голосов
/ 13 ноября 2009

Они вам понадобятся рано или поздно;) Но для начинающих их немного сложно написать (но они просты в использовании, поэтому интенсивно используйте STL). А после овладения другими навыками C ++ (правильность констант, перегрузка операторов, изучение модулей компиляции и т. Д.) И приобретением некоторого опыта, вы начнете создавать шаблоны для себя. Поэтому мой совет: используйте их, но научитесь их писать, когда они вам понадобятся. Обучение будет намного быстрее и эффективнее, если вы сначала приобретете некоторый опыт работы со стандартными конструкциями c ++.

7 голосов
/ 13 ноября 2009

У моего работодателя вещь main , которую мы используем, которая находится в C ++, а не в C, на самом деле является обобщением, AKA "шаблонами". Наследование & c - это хорошо (но с плюсами и минусами), но шаблоны абсолютно важны - главное, менее затратное преимущество C ++ по сравнению с обычным C. Освоив их, вы не будет тратить время! -)

4 голосов
/ 13 ноября 2009

Конечно, они используются в промышленности. Просто посмотрите на Стандартную библиотеку шаблонов (STL)!

Вы определенно должны знать, как работать с шаблонами, а лучше - научиться делать с ними некоторые изворотливые вещи, такие как метапрограммирование шаблонов, хорошо, это может быть необязательным, но классы шаблонов - нет!

РЕДАКТИРОВАТЬ: Более того, многие другие языки, такие как Java и C #, поддерживают концепцию обобщений, которая эквивалентна шаблонам в c ++, но обобщения гораздо более ограничительны.

3 голосов
/ 13 ноября 2009

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

2 голосов
/ 13 ноября 2009

Вы не можете пойти далеко, не освоив шаблоны в C ++, если вы пишете код на Windows. ATL, STL и другие библиотеки Windows активно используют шаблоны.

Примечание к сведению *. Если вы используете Visual Studio, вы можете узнать причуды, которые используются в Visual Studio для поддержки шаблонов. Например, многие библиотеки Windows часто объявляют все свое содержимое в заголовочных файлах, чтобы обойти ошибки компоновщика. Это раздражает, но это ограничение часто является камнем преткновения для изучения C ++ новичком с использованием visual studio.

1 голос
/ 13 ноября 2009

Как уже отмечали другие, шаблоны являются очень важной частью языка C ++. На самом деле, они сами по себе являются языком тьюринга;) Тем не менее, STL не только интенсивно использует шаблоны (когда-либо использовались std :: vector или std :: pair?), Но и многие другие библиотеки тоже ... наиболее заметным является, вероятно, boost. Надеюсь, это даст вам представление о том, насколько они важны.

То, что вы обязательно должны изучить, это то, как использовать их в контексте классов и функций. Когда вы освоите это, вы можете перейти к более сложным темам, таким как специализация шаблона или параметры шаблона-шаблона. И если вам все еще не хватает шаблонов, вы можете проверить «Шаблоны C ++: Полное руководство» Николая М. Йосуттиса и «Современный дизайн C ++» Андрея Александреску. Хотя последнее действительно трудно понять.

Для начала, этот ресурс http://www.parashift.com/c++-faq-lite/templates.html тоже может быть полезен:)

Обратите также внимание, что Generics - это не "шаблоны в C # / Java" или наоборот ... они следуют другой концепции.

1 голос
/ 13 ноября 2009

Я бы сказал, что понимание шаблонов является обязательным требованием для современного стиля C ++ и идиом и получения максимальной отдачи от языка. Они не так сложны, как часто заставляют поверить. Если вы новичок, я бы абсолютно порекомендовал книгу типа Accelerated C ++ , которая предлагает очень нежное и естественное введение в шаблоны.

1 голос
/ 13 ноября 2009

Нет, не тратьте много времени на изучение того, как реализовать их. Другие ответы правильно объясняют, что вы, безусловно, должны научиться использовать их. В этом есть смысл; многие библиотеки предоставляют шаблоны классов, и вы должны научиться использовать эти библиотеки. Но написание собственных шаблонов гораздо реже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...