C++分别用三个不同名字的函数求两个整数,两个浮点数,两个字符的最大值,然后主函数中使用统一的函数调用接口,求给定两个整数,两个浮点数,两个字符的最大值。要求:使用函数指针(可以在子函数里直接输出)
时间: 2024-02-11 20:07:54 浏览: 23
好的,我来为您解答。
首先,我们可以定义三个不同名字的函数来分别求两个整数、两个浮点数、两个字符的最大值。代码如下:
```cpp
int max(int a, int b) {
return a > b ? a : b;
}
float max(float a, float b) {
return a > b ? a : b;
}
char max(char a, char b) {
return a > b ? a : b;
}
```
然后,我们可以定义一个函数指针类型 `MaxFunc`,它可以指向上述三个函数中的任何一个:
```cpp
typedef int (*MaxFunc)(int, int);
typedef float (*MaxFunc)(float, float);
typedef char (*MaxFunc)(char, char);
```
接下来,我们可以定义一个通用的函数 `maxValue`,它接受两个参数 `a` 和 `b`,以及一个函数指针 `maxFunc`,用于指定要调用哪个函数来求最大值。代码如下:
```cpp
template<typename T>
T maxValue(T a, T b, MaxFunc maxFunc) {
return maxFunc(a, b);
}
```
最后,在主函数中,我们可以使用 `maxValue` 函数来求给定两个整数、两个浮点数、两个字符的最大值,代码如下:
```cpp
int main() {
int a = 1, b = 2;
float c = 1.0, d = 2.0;
char e = 'a', f = 'b';
// 指定调用 int 类型的 max 函数
cout << "Max of " << a << " and " << b << " is " << maxValue(a, b, max) << endl;
// 指定调用 float 类型的 max 函数
cout << "Max of " << c << " and " << d << " is " << maxValue(c, d, max) << endl;
// 指定调用 char 类型的 max 函数
cout << "Max of " << e << " and " << f << " is " << maxValue(e, f, max) << endl;
return 0;
}
```
这样,我们就使用了函数指针来实现了一个通用的求最大值函数。