编写一个函数模版,能够处理整数、实数、串类对象的大小比较,返回两个值中的最小者。为了能够处理字符数组存储的字符串的大小比较,则需要使用函数重载的形式。为了能够处理串类对象的大小比较,则需要对串类实现关
时间: 2023-04-26 22:02:06 浏览: 222
于运算符重载,重载小于运算符(<),并在函数模板中使用该运算符进行大小比较。具体实现可以参考以下代码:
```
#include <iostream>
#include <string>
using namespace std;
template <typename T>
T min(T a, T b) {
return a < b ? a : b;
}
template <>
const char* min<const char*>(const char* a, const char* b) {
return strcmp(a, b) < ? a : b;
}
template <>
string min<string>(string a, string b) {
return a < b ? a : b;
}
int main() {
int a = 3, b = 5;
cout << min(a, b) << endl;
double c = 2.5, d = 1.8;
cout << min(c, d) << endl;
const char* e = "hello", *f = "world";
cout << min(e, f) << endl;
string g = "apple", h = "banana";
cout << min(g, h) << endl;
return ;
}
```
在上述代码中,我们定义了一个函数模板 `min`,它可以处理整数、实数、字符串等类型的大小比较。对于字符串类型,我们使用函数重载的形式,重载了 `const char*` 和 `string` 类型的 `min` 函数。在 `main` 函数中,我们分别测试了整数、实数、字符串类型的大小比较。