定义一个类模板来实现三个数比较大小,分别用两个成员函数max()和min()返回最大值和最小值。要求不仅能够处理整型、实型、字符型等基本数据,而且能够正确处理字符串。
时间: 2024-03-22 15:38:23 浏览: 50
好的,我可以为您提供一个类模板来实现该功能。以下是代码示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
template<typename T>
class Compare {
public:
Compare(T a, T b, T c) : x(a), y(b), z(c) {}
T max() const {
T tmp = x > y ? x : y;
return z > tmp ? z : tmp;
}
T min() const {
T tmp = x < y ? x : y;
return z < tmp ? z : tmp;
}
private:
T x, y, z;
};
template<>
class Compare<string> {
public:
Compare(string a, string b, string c) : x(a), y(b), z(c) {}
string max() const {
string tmp = x > y ? x : y;
return z > tmp ? z : tmp;
}
string min() const {
string tmp = x < y ? x : y;
return z < tmp ? z : tmp;
}
private:
string x, y, z;
};
int main() {
Compare<int> c1(1, 2, 3);
cout << "max: " << c1.max() << ", min: " << c1.min() << endl;
Compare<double> c2(1.1, 2.2, 3.3);
cout << "max: " << c2.max() << ", min: " << c2.min() << endl;
Compare<char> c3('a', 'b', 'c');
cout << "max: " << c3.max() << ", min: " << c3.min() << endl;
Compare<string> c4("abc", "def", "ghi");
cout << "max: " << c4.max() << ", min: " << c4.min() << endl;
return 0;
}
```
在该代码中,我们定义了一个类模板 `Compare`,它可以处理整型、实型、字符型以及字符串。成员函数 `max()` 和 `min()` 分别返回最大值和最小值。对于字符串,我们需要使用特化的方式来实现 `Compare<string>` 类。
阅读全文