C++编写重载的max函数,分别计算两个int、float、double、char、string、const char*数据的最大值。
时间: 2024-10-13 19:19:06 浏览: 35
C++中string转换为char*类型返回后乱码问题解决
5星 · 资源好评率100%
在C++中,重载(Overloading)允许你在同一个作用域内为同一个操作符或函数名提供多种不同的实现,以便根据传入的参数类型自动选择合适的方法。对于`max`函数,我们通常会为其提供一系列模板版本,以便处理不同类型的数据。这里是一个简单的例子:
```cpp
#include <iostream>
#include <string>
#include <cctype>
template <typename T>
T max(T a, T b) {
return (a > b) ? a : b;
}
// 特殊化处理字符类型的比较
int max(char a, char b) {
return std::toupper(a) > std::toupper(b) ? a : b;
}
std::string max(const std::string &a, const std::string &b) {
return a.length() > b.length() ? a : b;
}
// 对于const char*,我们将它转换为char数组再比较
const char* max(const char* a, const char* b) {
int lenA = strlen(a);
int lenB = strlen(b);
return lenA >= lenB ? a : b;
}
int main() {
int intMax = max(5, 10);
float floatMax = max(3.14f, 2.71f);
double doubleMax = max(2.71828, 3.14159);
char charMax = max('a', 'z');
std::string strMax = max("Hello", "World");
const char* ptrMax = max("C++", "Java");
std::cout << "Int Max: " << intMax << std::endl;
std::cout << "Float Max: " << floatMax << std::endl;
std::cout << "Double Max: " << doubleMax << std::endl;
std::cout << "Char Max: " << charMax << std::endl;
std::cout << "String Max: " << strMax << std::endl;
std::cout << "Const Char* Max: " << ptrMax << std::endl;
return 0;
}
```
在这个例子中,我们首先定义了一个通用的`max`模板函数,适用于所有标准库支持的基本数据类型。然后,针对字符类型(需要先将字符转换为大写进行比较),以及字符串类型和`const char*`类型进行了特殊处理。
阅读全文