Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- //class GoodClass
- //{
- // int secret;
- //
- //public:
- // void badMethod() {};
- // void niceMethod(Fraction& fract) { fract.denominator = 5; };
- //
- //};
- class Fraction
- {
- int numerator;
- int denominator;
- public:
- Fraction(const Fraction& fract) : numerator{ fract.numerator }, denominator{ fract.denominator } { std::cout << "Fraction COPY constructed for " << this << '\n'; };
- Fraction(int num, int denom) : numerator{ num }, denominator{ denom ? denom : 1 } { std::cout << "Fraction constructed for " << this << '\n'; };
- Fraction() : Fraction(1, 1) {};
- ~Fraction() { std::cout << "Fraction destructed for " << this << '\n'; };
- void setNumerator(int num) { numerator = num; };
- int getNumerator() const { return numerator; };
- void setDenominator(int denom) { denominator = denom ? denom : 1; };
- int getDenominator() const { return denominator; };
- void print();
- Fraction& mul(const Fraction fract) { numerator *= fract.numerator; denominator *= fract.denominator; return *this; };
- Fraction& mul(int num) { numerator *= num; return *this; };
- Fraction& div(const Fraction fract) { numerator *= fract.denominator; denominator *= fract.numerator; return *this; };
- Fraction& div(int num) { denominator *= num; return *this; };
- Fraction operator*(const Fraction& rhs);
- //int x{ 2 };
- //int y{ 3 };
- //int z{ x * y };
- //friend Fraction operator*(const Fraction& lhs, const Fraction& rhs); // a * b
- //friend void operator*(const Fraction& lhs, int rhs); // a * x
- //friend void operator*(int lhs, const Fraction& rhs); // y * b
- };
- Fraction Fraction::operator*(const Fraction& rhs)
- {
- return Fraction{ numerator * rhs.numerator, denominator * rhs.denominator };
- }
- //Fraction operator*(const Fraction& lhs, const Fraction& rhs)
- //{
- // /*Fraction result{};
- // result.numerator = lhs.numerator * rhs.numerator;
- // result.denominator = lhs.denominator * rhs.denominator;
- // return result;*/
- //
- // return Fraction{ lhs.numerator * rhs.numerator, lhs.denominator * rhs.denominator };
- //}
- void Fraction::print()
- {
- std::cout << '(' << numerator << " / " << denominator << ")";
- };
- int main()
- {
- Fraction a{ 1,3 };
- Fraction b{ 2,4 };
- int x{ 42 };
- Fraction c;
- //c = operator*(a,b);
- c = a.operator*(b);
- c = a * b;
- c.print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement