用c++编写一个基本fraction分数类
时间: 2024-02-18 10:37:52 浏览: 33
以下是一个简单的 C++ 分数类 Fraction 的实现:
```cpp
#include <iostream>
using namespace std;
class Fraction {
private:
int numerator; // 分子
int denominator; // 分母
public:
// 构造函数
Fraction(int n = 0, int d = 1) : numerator(n), denominator(d) {}
// 获取分子和分母
int getNumerator() const { return numerator; }
int getDenominator() const { return denominator; }
// 赋值运算符重载
Fraction& operator=(const Fraction& other) {
numerator = other.numerator;
denominator = other.denominator;
return *this;
}
// 加法运算符重载
friend Fraction operator+(const Fraction& f1, const Fraction& f2) {
int n = f1.numerator * f2.denominator + f2.numerator * f1.denominator;
int d = f1.denominator * f2.denominator;
return Fraction(n, d);
}
// 减法运算符重载
friend Fraction operator-(const Fraction& f1, const Fraction& f2) {
int n = f1.numerator * f2.denominator - f2.numerator * f1.denominator;
int d = f1.denominator * f2.denominator;
return Fraction(n, d);
}
// 乘法运算符重载
friend Fraction operator*(const Fraction& f1, const Fraction& f2) {
int n = f1.numerator * f2.numerator;
int d = f1.denominator * f2.denominator;
return Fraction(n, d);
}
// 除法运算符重载
friend Fraction operator/(const Fraction& f1, const Fraction& f2) {
int n = f1.numerator * f2.denominator;
int d = f1.denominator * f2.numerator;
return Fraction(n, d);
}
// 输出运算符重载
friend ostream& operator<<(ostream& os, const Fraction& f) {
os << f.numerator << "/" << f.denominator;
return os;
}
// 约分
void reduce() {
int gcd = __gcd(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
}
};
int main() {
Fraction f1(1, 2);
Fraction f2(3, 4);
Fraction f3 = f1 + f2;
Fraction f4 = f1 - f2;
Fraction f5 = f1 * f2;
Fraction f6 = f1 / f2;
cout << "f1 = " << f1 << endl;
cout << "f2 = " << f2 << endl;
cout << "f1 + f2 = " << f3 << endl;
cout << "f1 - f2 = " << f4 << endl;
cout << "f1 * f2 = " << f5 << endl;
cout << "f1 / f2 = " << f6 << endl;
}
```
上述代码定义了一个 Fraction 类,其中包含分子和分母两个私有成员变量,以及加、减、乘、除等运算符的重载函数。在主函数中,我们创建两个分数对象 f1 和 f2,并使用重载的运算符进行加、减、乘、除操作。最后,我们通过重载的输出运算符将结果输出到控制台。
注意,在上述代码中,我们还定义了一个 reduce 函数,用于将分数约分为最简形式。在需要输出分数时,我们先调用 reduce 函数将其约分,再输出到控制台,以确保输出的分数是最简形式。