Advertisement
avr39ripe

PV913FractionOperatorOverloading

Jun 2nd, 2020
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.40 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. //class GoodClass
  4. //{
  5. //    int secret;
  6. //
  7. //public:
  8. //    void badMethod() {};
  9. //    void niceMethod(Fraction& fract) { fract.denominator = 5; };
  10. //    
  11. //};
  12.  
  13. class Fraction
  14. {
  15.     int numerator;
  16.     int denominator;
  17. public:
  18.     Fraction(const Fraction& fract) : numerator{ fract.numerator }, denominator{ fract.denominator } { std::cout << "Fraction COPY constructed for " << this << '\n'; };
  19.     Fraction(int num, int denom) : numerator{ num }, denominator{ denom ? denom : 1 } { std::cout << "Fraction constructed for " << this << '\n'; };
  20.     Fraction() : Fraction(1, 1) {};
  21.     ~Fraction() { std::cout << "Fraction destructed for " << this << '\n'; };
  22.     void setNumerator(int num) { numerator = num; };
  23.     int getNumerator() const { return numerator; };
  24.     void setDenominator(int denom) { denominator = denom ? denom : 1; };
  25.     int getDenominator() const { return denominator; };
  26.     void print();
  27.     Fraction& mul(const Fraction fract) { numerator *= fract.numerator; denominator *= fract.denominator; return *this; };
  28.     Fraction& mul(int num) { numerator *= num; return *this; };
  29.     Fraction& div(const Fraction fract) { numerator *= fract.denominator; denominator *= fract.numerator; return *this; };
  30.     Fraction& div(int num) { denominator *= num; return *this; };
  31.     Fraction operator*(const Fraction& rhs);
  32.  
  33.     //int x{ 2 };
  34.     //int y{ 3 };
  35.     //int z{ x * y };
  36.     //friend Fraction operator*(const Fraction& lhs, const Fraction& rhs); // a * b
  37.     //friend void operator*(const Fraction& lhs, int rhs); // a * x
  38.     //friend void operator*(int lhs, const Fraction& rhs); // y * b
  39. };
  40.  
  41. Fraction Fraction::operator*(const Fraction& rhs)
  42. {
  43.     return Fraction{ numerator * rhs.numerator,  denominator * rhs.denominator };
  44. }
  45.  
  46. //Fraction operator*(const Fraction& lhs, const Fraction& rhs)
  47. //{
  48. //    /*Fraction result{};
  49. //    result.numerator = lhs.numerator * rhs.numerator;
  50. //    result.denominator = lhs.denominator * rhs.denominator;
  51. //    return result;*/
  52. //
  53. //    return Fraction{ lhs.numerator * rhs.numerator,  lhs.denominator * rhs.denominator };
  54. //}
  55.  
  56.  
  57. void Fraction::print()
  58. {
  59.     std::cout << '(' << numerator << " / " << denominator << ")";
  60. };
  61.  
  62. int main()
  63. {
  64.     Fraction a{ 1,3 };
  65.     Fraction b{ 2,4 };
  66.     int x{ 42 };
  67.     Fraction c;
  68.  
  69.     //c = operator*(a,b);
  70.     c = a.operator*(b);
  71.     c = a * b;
  72.  
  73.  
  74.  
  75.     c.print();
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement