C ++运算符重载转换

时间:2018-06-16 16:45:30

标签: c++

class Fraction
{
  friend Fraction operator+(const Fraction& f1, const Fraction& f2);

  private:
    int numerator;
    int denominator;

};

--------------------------------------------------------------------


Fraction operator+(const Fraction& f1, const Fraction& f2)
{ 
   Fraction r;        // declare a Fraction to hold the result

   // load result Fraction with sum of adjusted numerators
   r.numerator = (f1.numerator*f2.denominator)
                  + (f2.numerator*f1.denominator);

   // load result with the common denominator
   r.denominator = f1.denominator * f2.denominator;

   return r;         // return the result Fraction
}

有没有办法让Operator + add fraction(来自Fraction类)带整数?

示例:

Fraction frac(7/15), x = frac + 13;

1 个答案:

答案 0 :(得分:1)

是的,这是可能的,虽然我不会这样做。

据推测(在您的真实代码中),您有Fraction的构造函数,它带有两个参数:分子和分母。将分母设为默认参数设置为1。

然后您不再需要+的任何重载,或者您打算随时间支持的任何额外重载(例如-*和&amp; c。)。< / p>