首页 文章

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

提问于
浏览
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;
}

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

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都可以转换为的类型 . 例如,如果添加 floatint ,则类型将为 float .

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

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

相关问题