定义一个类模板来实现三个数比较大小,,分别用两个成员函数 max()和min()返回最大值和最小值。要求不仅能够处理整型、实型、字符型等基本数据,而且能够正确处理字符串。
时间: 2024-03-22 10:37:53 浏览: 152
下面是一个实现该功能的类模板:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
template <typename T>
class ThreeNumCompare {
public:
ThreeNumCompare(T a, T b, T c): num1(a), num2(b), num3(c) {}
T max() const {
return std::max({num1, num2, num3});
}
T min() const {
return std::min({num1, num2, num3});
}
private:
T num1;
T num2;
T num3;
};
template <>
class ThreeNumCompare<string> {
public:
ThreeNumCompare(string a, string b, string c): str1(a), str2(b), str3(c) {}
string max() const {
return std::max({str1, str2, str3});
}
string min() const {
return std::min({str1, str2, str3});
}
private:
string str1;
string str2;
string str3;
};
int main() {
ThreeNumCompare<int> int_cmp(1, 2, 3);
cout << "Max: " << int_cmp.max() << endl;
cout << "Min: " << int_cmp.min() << endl;
ThreeNumCompare<double> double_cmp(1.5, 2.3, 3.8);
cout << "Max: " << double_cmp.max() << endl;
cout << "Min: " << double_cmp.min() << endl;
ThreeNumCompare<string> string_cmp("hello", "world", "cpp");
cout << "Max: " << string_cmp.max() << endl;
cout << "Min: " << string_cmp.min() << endl;
return 0;
}
```
该类模板可以处理整型、实型、字符型等基本类型,以及字符串类型。如果使用字符串类型,则需要特化该类模板。在这个特化版本中,max()和min()成员函数使用std::max和std::min函数进行字符串的比较。
阅读全文