【问题标题】:Function template or Gereric function is the right term?函数模板或 Gereric 函数是正确的术语吗?
【发布时间】: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


【解决方案1】:

C++ 标准将其称为函数模板。泛型函数一词更多地用于其他面向对象的语言中(例如,在 LISP 中,这些是具有相同名称的函数)。 Java 使用泛型类型来实现泛型编程的最小化方法。

x 是函数参数。 T 是模板参数。在printSmt&lt;int&gt;() int 是模板参数。

【讨论】:

  • 非常感谢。这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
相关资源
最近更新 更多