定义一个类模板来实现三个数比较大小,,分别用两个成员函数 max()和min()返回最大值和最小值。要求不仅能够处理整型、实型、字符型等基本数据,而且能够正确处理字符串。
时间: 2024-03-23 09:40:58 浏览: 55
比较数的最大值和最小值
好的,我可以为您提供这样一个类模板的实现:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
template <typename T>
class ThreeNumbers {
public:
ThreeNumbers(const T& a, const T& b, const T& c) : a_(a), b_(b), c_(c) {}
T max() const {
return std::max(std::max(a_, b_), c_);
}
T min() const {
return std::min(std::min(a_, b_), c_);
}
private:
T a_, b_, c_;
};
template <>
class ThreeNumbers<std::string> {
public:
ThreeNumbers(const std::string& a, const std::string& b, const std::string& c) : a_(a), b_(b), c_(c) {}
std::string max() const {
return std::max(std::max(a_, b_), c_);
}
std::string min() const {
return std::min(std::min(a_, b_), c_);
}
private:
std::string a_, b_, c_;
};
int main() {
ThreeNumbers<int> a(1, 2, 3);
std::cout << a.max() << " " << a.min() << std::endl;
ThreeNumbers<double> b(1.1, 2.2, 3.3);
std::cout << b.max() << " " << b.min() << std::endl;
ThreeNumbers<char> c('a', 'b', 'c');
std::cout << c.max() << " " << c.min() << std::endl;
ThreeNumbers<std::string> d("hello", "world", "cpp");
std::cout << d.max() << " " << d.min() << std::endl;
return 0;
}
```
这个类模板可以处理整型、实型、字符型和字符串类型,同时提供了 `max()` 和 `min()` 两个成员函数来返回最大值和最小值。对于不同类型的数据,我们使用不同的比较函数来实现大小比较。对于字符串类型,我们使用了 `std::max()` 和 `std::min()` 来完成比较,因为 C++ STL 中已经提供了对字符串的比较函数。
阅读全文