可能重复:
What is the difference between a template class and a class template?
我见过几位C ++大师因为调用类似
的内容而扯掉人们template <typename T>
class SomeClass
{
//...
};
模板类而不是类模板。 (请注意,这不是一个巨大的裂缝,但是表明某人不是经验丰富的C ++程序员)是的,正确的词是“类模板” - 因为它是用于生成类的模板。
但我不明白为什么在典型的谈话中这种区别很重要。没有人听/读你写的东西会理解你所说的是什么意思。
标准中是否有某些特定用途的“模板类”或者其他方式使用了那些严重错误的单词?
答案 0 :(得分:5)
根据this page:
注意术语之间的区别 类模板和模板类:
- 班级模板 是用于生成模板类的模板。你不能申报 类模板的对象。
- 模板类 是类模板的一个实例。
此MSDN页面似乎同意此定义:
与功能模板不同,时 实例化一个类模板,你 必须显式实例化该类 通过给出类的参数 模板。
[...]
编译器为a生成代码 模板类或在实例化类或函数时的函数。
答案 1 :(得分:1)
快速搜索得出:
问: 功能模板和a之间是否存在差异? 模板函数,或类模板和 模板类?
A: 术语“功能模板”指的是一种模板。 术语“模板功能”有时用于表示 同样的事情,有时候意味着一个实例化的函数 从功能模板。最好避免这种歧义 通过使用“功能模板”为前者和东西 比如“功能模板实例”或“实例” 功能模板“用于后者。注意一个功能 模板不是一个功能。同样的区别 适用于“类模板”与“模板类”。
对我有意义。
答案 2 :(得分:0)
我个人不会做出更正,但我可以看到它背后的逻辑。它与将超类调用为子类没有什么不同,反之亦然。他们所说的本质上是错误的,并不代表同样的事情。
重要的是,特别是对于更多的初级程序员来说,从代码的角度进行思考,而当您将语言错误地翻译成英语时,这是不可能的。