c++编写重载函数max1可分别求取两个整数、三个整数、两个双精度数、三个双精度数的最大值。
时间: 2024-09-25 17:08:45 浏览: 50
在C++中,我们可以使用模板和重载(overload)来编写一个名为`max1`的函数,这个函数可以根据传入参数的数量和类型来处理不同的情况。以下是`max1`函数的一个示例实现:
```cpp
#include <iostream>
#include <limits>
// 用于比较两个整数
template<typename T>
T max1(T a, T b) {
return (a > b) ? a : b;
}
// 用于比较三个整数
template<typename T>
T max1(T a, T b, T c) {
return std::max(max1(a, b), c);
}
// 类似地,为double类型提供版本
template<typename T>
T max1(T a, T b, T c = std::numeric_limits<T>::min()) { // 使用默认参数处理两数的情况
return max1(a, std::max(b, c));
}
int main() {
int i1 = 5, i2 = 3, i3 = 7;
double d1 = 3.14, d2 = 2.71, d3 = 4.0;
std::cout << "Max of two integers: " << max1(i1, i2) << "\n";
std::cout << "Max of three integers: " << max1(i1, i2, i3) << "\n";
std::cout << "Max of two doubles: " << max1(d1, d2) << "\n";
std::cout << "Max of three doubles: " << max1(d1, d2, d3) << "\n";
return 0;
}
```
在这个例子中,`max1`函数首先处理了两个和三个整数的情况,然后通过模板参数推导,自然地扩展到了双精度数。当你在main函数中调用`max1`时,编译器会根据实际传递的参数类型自动选择对应的函数版本。
阅读全文