编写重载函数max1可以分别求两个整数、三个整数,两个双精度,三个双精度的最大值。要求用面向对象程序设计c++的方式编写
时间: 2024-09-21 12:13:41 浏览: 61
在C++中,为了实现一个多态的行为,我们可以创建一个名为`MaxCalculator`的类,然后定义一系列模板方法来处理不同类型的数值。这里我会展示如何通过重载函数`max`来实现这个功能:
```cpp
#include <iostream>
#include <cmath>
template <typename T>
class MaxCalculator {
public:
static T max(T a, T b) {
return a > b ? a : b;
}
template <typename U>
static T max(T a, U b, U c = std::numeric_limits<U>::min()) {
return a > b && a > c ? a : (b > c ? b : c);
}
};
int main() {
// 求两个整数的最大值
int x = 5, y = 10;
std::cout << "Max of two integers: " << MaxCalculator<int>::max(x, y) << std::endl;
// 求三个整数的最大值
int z = 8;
std::cout << "Max of three integers: " << MaxCalculator<int>::max(x, y, z) << std::endl;
// 求两个double的最大值
double d1 = 3.14, d2 = 2.71;
std::cout << "Max of two doubles: " << MaxCalculator<double>::max(d1, d2) << std::endl;
// 求三个double的最大值
double d3 = 2.9;
std::cout << "Max of three doubles: " << MaxCalculator<double>::max(d1, d2, d3) << std::endl;
return 0;
}
```
在这个例子中,`MaxCalculator`是一个模板类,它定义了两个静态成员函数:一个是基础版本,用于求两个同类别的最大值;另一个是模板函数,可以接受任意数量的同类型参数并返回最大的那个。
阅读全文