“类模板”vs“模板类”

时间:2010-12-09 07:50:28

标签: c++ templates standards

  

可能重复:
  What is the difference between a template class and a class template?

我见过几位C ++大师因为调用类似

的内容而扯掉人们
template <typename T>
class SomeClass
{
    //...
};

模板类而不是类模板。 (请注意,这不是一个巨大的裂缝,但是表明某人不是经验丰富的C ++程序员)是的,正确的词是“类模板” - 因为它是用于生成类的模板。

但我不明白为什么在典型的谈话中这种区别很重要。没有人听/读你写的东西会理解你所说的是什么意思。

标准中是否有某些特定用途的“模板类”或者其他方式使用了那些严重错误的单词?

3 个答案:

答案 0 :(得分:5)

根据this page

  

注意术语之间的区别   类模板和模板类:

     
      
  • 班级模板   是用于生成模板类的模板。你不能申报   类模板的对象。
  •   
  • 模板类   是类模板的一个实例。
  •   

MSDN页面似乎同意此定义:

  

与功能模板不同,时   实例化一个类模板,你   必须显式实例化该类   通过给出类的参数   模板。

     

[...]

     

编译器为a生成代码   模板类或在实例化类或函数时的函数。

答案 1 :(得分:1)

快速搜索得出:

  

问:           功能模板和a之间是否存在差异?           模板函数,或类模板和           模板类?

     

A:               术语“功能模板”指的是一种模板。               术语“模板功能”有时用于表示               同样的事情,有时候意味着一个实例化的函数               从功能模板。最好避免这种歧义               通过使用“功能模板”为前者和东西               比如“功能模板实例”或“实例”               功能模板“用于后者。注意一个功能               模板不是一个功能。同样的区别               适用于“类模板”与“模板类”。

对我有意义。

答案 2 :(得分:0)

我个人不会做出更正,但我可以看到它背后的逻辑。它与将超类调用为子类没有什么不同,反之亦然。他们所说的本质上是错误的,并不代表同样的事情。

重要的是,特别是对于更多的初级程序员来说,从代码的角度进行思考,而当您将语言错误地翻译成英语时,这是不可能的。