我正在C++中的分数类上工作,并在新类中定义了frac和int的加法,但是它要求它们按以下顺序显示:frac + int。有没有办法在Int类型中重载+,以便我们有一个接受frac并输出frac的函数?还是有办法在新类中颠倒顺序?

我已经定义了frac + frac和frac + = frac运算符。有问题的两个功能是:

frac operator+=(int b)
{
    frac c = { n + b*d, d };
    return c;
}

frac operator+(int b)
{
    frac c = *this;
    frac d = { b };
    c += d;
    return c;
}

像这样的东西:
frac int::operator+=(frac& b)
{
    frac c = { this * b.den() + b.num(), b.den() };
    return c;
}

但我不确定如何实际完成此操作。

来自以下问题的代码:
frac &operator+=(frac b)
{
    frac c = { n * b.den() + b.num() * d, d * b.den() };
    n = c.num();
    d = c.den();
    return *this;
}

frac operator+(int a, frac b)
{
    return frac{ a } += b;
}

最佳答案

好吧,因为没有int类,所以您无法执行建议的操作,但最简单的方法是在类内部声明一个这样的函数

 friend frac operator+(int a, frac b);

这样,当使用其他顺序时将调用此函数。编辑:您需要使用friend说明符,因为该函数不在类中,对此我忘了。

关于c++ - C++运算符重载int类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24593084/

10-11 04:42