-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOpOverloadFractionClass.cpp
53 lines (40 loc) · 1.21 KB
/
OpOverloadFractionClass.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
class Fraction
{
private:
int m_numerator;
int m_denumerator;
public:
Fraction() = default;
Fraction(int numerator, int denumerator) : m_numerator { numerator }, m_denumerator {denumerator} {}
void print() { std::cout << m_numerator << "/" << m_denumerator << std::endl; }
friend Fraction operator*(const Fraction &fraction1, const Fraction &fraction2);
friend Fraction operator*(const Fraction &fraction, int x);
friend Fraction operator*(int x, const Fraction &fraction);
};
Fraction operator*(const Fraction &fraction1, const Fraction &fraction2)
{
return Fraction(fraction1.m_numerator * fraction2.m_numerator, fraction1.m_denumerator * fraction2.m_denumerator);
}
Fraction operator*(const Fraction &fraction, int x)
{
return Fraction(fraction.m_numerator * x, fraction.m_denumerator);
}
Fraction operator*(int x, const Fraction &fraction)
{
return Fraction(fraction.m_numerator * x, fraction.m_denumerator);
}
int main()
{
Fraction f1{ 1, 4 };
f1.print();
Fraction f2{ 1, 2 };
f2.print();
Fraction mlt1 = f1 * f2;
mlt1.print();
Fraction mlt2 = f1 * 8;
mlt2.print();
Fraction mlt3 = 9 * f2;
mlt3.print();
return 0;
}