【发布时间】:2014-09-01 08:56:35
【问题描述】:
我有点坚持这一点。我在一本书中读到,我们可以使用函数模板制作泛型函数,但在其他地方,作者将泛型函数称为函数模板。例如,女巫是正确的:
template <class T> void printSmt(T x){}
这里的printSmt叫做泛型函数还是函数模板?
还有一个问题:函数printSmt的参数列表中的x是泛型类型还是模板参数?
编辑:我正在为我的学校写一些文件。如果可能的话,根据 C++ 参考给我一个答案。
【问题讨论】:
-
C++ 标准中没有“泛型函数”这样的术语。 “通用”这个词更多地属于编程的风格,通常涉及 C++ 中的模板。
-
由于函数模板不是函数,我非常不愿意将函数模板称为“通用函数”。这不是一个函数。 (相比之下,模板函数就是一个函数。)在数学中,有时会出现一种奇怪的限定反转(限定越多越不具体),但这是不卫生的,我们不需要将其拖入编程中。
-
x是函数的形参,就像在非模板函数中一样。它的类型是T,模板参数。我听说过 C++ 中没有“泛型类型”。 (顺便说一句:当您说“我读过一本书”时,最好包含该书的标题和作者。) -
s/Template function/Function template/。它是生成函数的模板,而不是作为模板的函数。
标签: c++ templates generic-programming