定义一个有理数类(类的声明如下所示),并重载比较运算符<、>、==。设计一主函数来测试上述运算符。 class rational { public: //构造函数 rational(int num,i
时间: 2024-09-24 07:13:47 浏览: 46
youlishu.rar_有理数类_重载
在C++中,你可以创建一个名为`Rational`的有理数类,并重载 `<`, `>` 和 `==` 运算符来进行数值间的比较。首先,你需要为类提供构造函数,以便初始化分子(num)和分母(den)。以下是这个类的基本声明以及重载的运算符:
```cpp
class Rational {
private:
int numerator; // 分子
int denominator; // 分母
public:
// 构造函数
Rational(int num, int den) : numerator(num), denominator(den) {
if (denominator == 0) throw std::invalid_argument("Denominator cannot be zero.");
}
// 重载比较运算符
bool operator<(const Rational& other) const {
return (numerator * other.denominator < other.numerator * denominator);
}
bool operator>(const Rational& other) const {
return (numerator * other.denominator > other.numerator * denominator);
}
bool operator==(const Rational& other) const {
return (numerator * other.denominator == other.numerator * denominator);
}
// 其他需要的成员函数,如显示分数形式等...
};
int main() {
try {
Rational r1(4, 2); // 2/1
Rational r2(6, 3); // 2/1
// 测试比较运算符
std::cout << "r1 < r2: " << (r1 < r2) << std::endl;
std::cout << "r1 > r2: " << (r1 > r2) << std::endl;
std::cout << "r1 == r2: " << (r1 == r2) << std::endl;
Rational r3(4, 2), r4(5, 2); // 2/1 和 5/2
std::cout << "r3 == r4: " << (r3 == r4) << std::endl; // 输出 false,因为它们不是完全相等
} catch (std::invalid_argument &e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
在这个例子中,我们还添加了检查分母是否为零的异常处理,因为在有理数中,分母不能为零。
阅读全文