分数类用友元函数重载加减乘除运算符
时间: 2023-07-15 10:09:03 浏览: 199
可以使用友元函数重载加减乘除运算符来实现分数类的运算。首先,我们需要定义一个表示分数的类,其中包含分子和分母两个成员变量。
```cpp
#include <iostream>
class Fraction {
public:
Fraction(int numerator = 0, int denominator = 1) : num(numerator), den(denominator) {}
// 声明友元函数
friend Fraction operator+(const Fraction& f1, const Fraction& f2);
friend Fraction operator-(const Fraction& f1, const Fraction& f2);
friend Fraction operator*(const Fraction& f1, const Fraction& f2);
friend Fraction operator/(const Fraction& f1, const Fraction& f2);
void print() const {
std::cout << num << "/" << den << std::endl;
}
private:
int num; // 分子
int den; // 分母
};
// 友元函数重载加法运算符
Fraction operator+(const Fraction& f1, const Fraction& f2) {
int numerator = f1.num * f2.den + f2.num * f1.den;
int denominator = f1.den * f2.den;
return Fraction(numerator, denominator);
}
// 友元函数重载减法运算符
Fraction operator-(const Fraction& f1, const Fraction& f2) {
int numerator = f1.num * f2.den - f2.num * f1.den;
int denominator = f1.den * f2.den;
return Fraction(numerator, denominator);
}
// 友元函数重载乘法运算符
Fraction operator*(const Fraction& f1, const Fraction& f2) {
int numerator = f1.num * f2.num;
int denominator = f1.den * f2.den;
return Fraction(numerator, denominator);
}
// 友元函数重载除法运算符
Fraction operator/(const Fraction& f1, const Fraction& f2) {
int numerator = f1.num * f2.den;
int denominator = f1.den * f2.num;
return Fraction(numerator, denominator);
}
```
在上述代码中,我们使用了友元函数来实现加减乘除运算符的重载。友元函数可以直接访问类的私有成员变量,因此可以进行相应的运算。通过重载加减乘除运算符,我们可以直接对两个分数对象进行运算。
下面是一个示例的使用:
```cpp
int main() {
Fraction f1(1, 2);
Fraction f2(3, 4);
Fraction sum = f1 + f2;
std::cout << "Sum: ";
sum.print();
Fraction diff = f1 - f2;
std::cout << "Difference: ";
diff.print();
Fraction product = f1 * f2;
std::cout << "Product: ";
product.print();
Fraction quotient = f1 / f2;
std::cout << "Quotient: ";
quotient.print();
return 0;
}
```
输出结果为:
```
Sum: 10/8
Difference: -2/8
Product: 3/8
Quotient: 4/6
```
注意,在实际应用中,还需要进行一些额外的处理,例如约分等。上述代码只是一个简单示例,仅用于说明如何使用友元函数重载加减乘除运算符。
阅读全文