具有常量对象参数的类函数?

时间:2016-12-02 06:26:13

标签: c++ function class

我的作业要求我编写一个程序,对两个分数执行有理数运算加法,减法,乘法和除法。它们必须是具有变量分子和分母的类对象。我得到一个标题,我可能不会改变:

class Rational
{

    private:
        int numer;
        int denom;
    public:
        Rational();
        Rational(int);
        Rational(int, int);
        const Rational add(const Rational &) const;
        const Rational subtract(const Rational &) const;
        const Rational multiply(const Rational &) const;
        const Rational divide(const Rational &) const;
        void display() const;
};

例如,如果给定分数a,b和c,我必须将a乘以b并将其存储在c:

c = a.multiply(b)

我提出的功能定义类似于

const Rational Rational::multiply(const Rational &) const
{
   return a.numer*numer, a.denom*denom;
}

对象a在函数中是未定义的,但我没有其他想法可以将类对象作为变量传递并将其乘以另一个类。

3 个答案:

答案 0 :(得分:2)

  1. 为参数命名
  2. 正确构造结果对象并将其返回。

    const Rational Rational::multiply(const Rational & a) const
    {
       return {a.numer*numer, a.denom*denom};
    }
    

答案 1 :(得分:1)

您需要在return语句中使用双参数类构造函数。

return Rational(a.numer*numer, a.denom*denom);

答案 2 :(得分:1)

const Rational Rational::multiply(const Rational & rhs) const
{
   return Rational{numer * rhs.numer, denom * rhs.denom};
}