我的作业要求我编写一个程序,对两个分数执行有理数运算加法,减法,乘法和除法。它们必须是具有变量分子和分母的类对象。我得到一个标题,我可能不会改变:
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
在函数中是未定义的,但我没有其他想法可以将类对象作为变量传递并将其乘以另一个类。
答案 0 :(得分: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};
}