1

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

更易理解:

// 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;
}

不是更快的方法吗?我必须定义所有情况吗?

4

1 回答 1

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 都可以转换为的类型。例如,如果您添加 afloat和 an int,则类型将为float

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

template<class T>
void MyFunction(std::vector<T>& v)
{
    // do something with the vector v, for example:
    v.push_back(5);
}
于 2013-04-21T15:11:31.407 回答