重载函数用于不同类型的参数?

时间:2013-04-21 14:47:33

标签: c++ operators overloading

我正在考虑重载函数,这不是一种更快的执行方式,例如,成瘾而没有用不同的参数和输出定义函数很多次(int,float double ecc ...)。 / p>

更易于理解:

// 2 ints addiction

int addic(int & a, int & b) {
  int c;
  c = a + b;
  return c;
}

// 1 int + 1 float

float addic(int & a, float & b) {
  float c;
  c = a + b;
  return c;
}

不是更快的方式吗?我要定义所有案例吗?

1 个答案:

答案 0 :(得分:2)

这(避免代码重复)是模板存在的东西之一;下面是一个如何实现您用作示例的函数的示例(在C ++ 11中):

#include <type_traits> // for std::common_type
template<class T1, class T2>
std::common_type<T1, T2>::type addic(const T1& a, const T2& b)
{
    return a + b;
}

T1将是您传递给函数的第一个参数的类型,而T2将是第二个参数的类型。

std::common_type<T1, T2>::type是T1和T2都可以转换为的类型。例如,如果您添加floatint,则类型将为float

编辑:如果你想对矢量做一些事情,你可以这样做:

template<class T>
void MyFunction(std::vector<T>& v)
{
    // do something with the vector v, for example:
    v.push_back(5);
}
相关问题