2010-12-09 6 views
9

Можно создать дубликат:
What is the difference between a template class and a class template?"шаблонный класс" против "шаблонного класса"

Я видел несколько гуру C++ отрываться на людей для вызова что-то вроде

template <typename T> 
class SomeClass 
{ 
    //... 
}; 

класс шаблона вместо шаблона класса. (Не огромное разрывание, заметьте, но как указание на то, что кто-то не является опытным программистом на C++). Да, правильное слово - «шаблон шаблона» - потому что это шаблон, используемый для генерации классов.

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

Существует ли конкретное использование слов «шаблонный класс» в стандарте или иным образом, который использует эти слова в этом порядке грубо неправильно?

+0

Не забывайте, что есть много людей, которые настаивают на «правильном прикосновении». – sharptooth 2010-12-09 07:53:53

+0

@sharptooth: Я все за то, что я замалчиваю второстепенные технические или педантичные части ответов (в конце концов, я программист на C++). Но обычно этот комментарий направлен на человека, делающего комментарий, а не на содержание ответа. – 2010-12-09 07:56:24

+0

Возможный дубликат [В чем разница между классом шаблона и шаблоном класса?] (Http://stackoverflow.com/questions/879535/what-is-the-difference-between-a-template-class-and- a-class-template) или [Шаблоны классов и класс шаблонов] (http://stackoverflow.com/questions/2983146/class-templates-and-template-class) – 2010-12-09 08:00:26

ответ

5

В соответствии с this page:

Обратите внимание различие между терминами шаблона класса и класса шаблона:

  • шаблон класса представляет собой шаблон, используемый для создания классов шаблона. Вы не можете объявить объектом шаблона класса.
  • Шаблон класса - это экземпляр шаблона класса.

Это MSDN страницы, кажется, согласен с этим определением:

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

[...]

Компилятор генерирует код для шаблонного класса или функции, когда класс или функция конкретизируется.

1

Быстрый поиск дал:

Q: Есть ли разница между шаблоном функции и функции шаблона , или между шаблоном класса и класса в шаблона?

A: Термин «шаблон функции» относится к виду шаблона. Термин «функция шаблона» иногда используется так же, как и для , а иногда и для функции, созданной методом , из шаблона функции. Эта двусмысленность лучше избегать , используя «шаблон функции» для первого и что-то как «экземпляр шаблона функции» или «экземпляр шаблона функции » для последнего. Обратите внимание, что шаблон функции не является функцией. То же самое отличие относится к «шаблону класса» по сравнению с «классом шаблона».

Имеет смысл для меня.

0

Я лично не исправлял бы, но я вижу логику этого. Это ничем не отличается от вызова суперкласса подкласса или наоборот. То, что они говорят, по своей сути неверно, и не означает одно и то же.

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

Смежные вопросы