用泛型编程的方式把两个数相加,只有参数数据类型是Double或Integer时,透过调用泛型方法求和并返回求和的值。
时间: 2024-03-01 17:50:16 浏览: 97
在C++中,可以使用模板来实现泛型编程,从而实现只有参数数据类型是`double`或`int`时,透过调用泛型方法求和并返回求和的值的功能。具体代码如下:
```cpp
#include <iostream>
using namespace std;
template <typename T>
T add(T a, T b) {
return a + b;
}
template <>
double add<double>(double a, double b) {
return a + b;
}
template <>
int add<int>(int a, int b) {
return a + b;
}
int main() {
double a = 3.2, b = 5.7;
int c = 3, d = 5;
cout << add(a, b) << endl; // 调用double类型的模板函数
cout << add(c, d) << endl; // 调用int类型的模板函数
return 0;
}
```
在这个代码中,我们首先定义了一个模板函数`add`,该函数接受两个类型为`T`的参数,并返回类型为`T`的结果。然后,我们使用特化(specialization)来定义`add`函数的`double`和`int`类型的特定版本,分别实现了`double`类型和`int`类型的加法。最后,我们在`main`函数中使用`add`函数来实现两个`double`类型和两个`int`类型的加法,并输出结果。
需要注意的是,在模板函数中,我们使用`typename`关键字定义类型为`T`的参数类型。通过这种方式,我们可以在调用函数时,根据实际参数类型来自动推导出类型为`T`的参数类型。而在特化函数中,则使用`template <>`关键字来指定特定的类型,从而可以实现只有参数数据类型是`double`或`int`时,透过调用泛型方法求和并返回求和的值的功能。
阅读全文