gpt4 book ai didi

c++ - 不同类型参数的重载函数?

转载 作者:行者123 更新时间:2023-11-30 04:18:52 26 4
gpt4 key购买 nike

我正在考虑重载函数,这不是一种更快的执行方式吗,例如,无需多次使用不同的参数和输出(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;
}

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

最佳答案

这(为了避免代码重复)是模板存在的目的之一;下面是一个示例,说明如何实现用作示例的函数(在 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 都可以转换为的类型。例如,如果您添加 float和一个 int ,类型将为 float .

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

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

关于c++ - 不同类型参数的重载函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16132363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com