编写一个分数类实现分数的算术运算,要求重载+、*和<<等运算符(可不考虑化简)。
时间: 2024-02-27 16:56:41 浏览: 66
分数的运算符重载!!!!
好的,我了解了你的要求。下面是一个简单的分数类实现:
```c++
#include <iostream>
using namespace std;
class Fraction {
private:
int numerator; // 分子
int denominator; // 分母
public:
Fraction(int num, int den) : numerator(num), denominator(den) {}
Fraction operator+(const Fraction& f) {
int num = numerator * f.denominator + f.numerator * denominator;
int den = denominator * f.denominator;
return Fraction(num, den);
}
Fraction operator*(const Fraction& f) {
int num = numerator * f.numerator;
int den = denominator * f.denominator;
return Fraction(num, den);
}
friend ostream& operator<<(ostream& os, const Fraction& f) {
os << f.numerator << "/" << f.denominator;
return os;
}
};
int main() {
Fraction f1(1, 2);
Fraction f2(1, 3);
Fraction f3 = f1 + f2;
Fraction f4 = f1 * f2;
cout << f1 << " + " << f2 << " = " << f3 << endl;
cout << f1 << " * " << f2 << " = " << f4 << endl;
return 0;
}
```
在这个实现中,我们定义了一个 `Fraction` 类,包含了两个私有成员变量 `numerator` 和 `denominator`,分别表示分数的分子和分母。我们重载了 `+` 和 `*` 运算符,实现了分数的加法和乘法。我们还重载了 `<<` 运算符,用于方便地输出分数对象。
在 `main` 函数中,我们创建了两个分数对象 `f1` 和 `f2`,并分别进行了加法和乘法运算。最后,我们通过重载的 `<<` 运算符输出了运算结果。
需要注意的是,这个实现没有考虑分数的化简,也没有处理分母为零的情况。如果需要更加完善的实现,还需要对这些问题进行处理。
阅读全文