【问题标题】:Function Specialization功能专业化
【发布时间】:2014-04-07 22:21:18
【问题描述】:

我试图弄清楚这与它的功能有什么区别。

第一个是添加到表达式的模板函数:

template <class T,class Y,class Z>
Z add(T t,Y y)
{
  return t+y;
}

专业化_1:

template<>
int add<int,int,int>(int t,int y)
{

    return t+y+10000;
}

专业化_2:

int add(int t,int y)
{

    return t+y+10000;
}

speciaization_1 和 specialization_2 有什么区别? 声明前需要使用template吗???

【问题讨论】:

标签: c++ templates


【解决方案1】:

第一个是专业化。第二个是重载。

第一个将创建模板的特殊变体。第二个将创建另一个具有相同名称的函数

【讨论】:

  • 那么什么时候使用专业化而不是重载更好?
  • 这可能会有所帮助http://stackoverflow.com/questions/7108033/template-specialization-vs-function-overloading
【解决方案2】:

我认为您对您的第一个专业没有兴趣。这更有用,例如:

template <typename T>
T add(T t,T y)
{
  return t+y+10000;
}

现在您可以使用此功能添加许多不同的类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-12
    • 2020-06-26
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多