什么从运营商+到运营商 -

时间:2014-04-14 01:13:04

标签: c++ operator-overloading bigint

因此,对于BigInt问题,我想添加一个运算符,我该如何更改代码呢?这只是为了练习,但我在寻找变革解决方案时遇到了一些问题。

这是我的运营商+:

int carry = 0;
    int sum;
    BigInt result;
    list<int>::reverse_iterator rit1 = number.rbegin();
    list<int>::reverse_iterator rit2 = operand.number.rbegin();
    while ( (rit1 != number.rend()) || (rit2 != operand.number.rend()) )
    {
        sum = 0;

        if (rit1 != number.rend())
        {
            sum += *rit1;
            rit1++;
        }

        if (rit2 != operand.number.rend())
        {
            sum += *rit2;
            rit2++;
        }

        sum += carry;
        result.number.push_front(sum % 10);
        carry = sum / 10;
    }

    if (carry > 0)
        result.number.push_front(carry);

    return result;

1 个答案:

答案 0 :(得分:0)

为什么不用operator- ......来构建x + -y?如果你还没有否定操作符,那么添加起来似乎很好,也更容易。然后你需要修复你的operator+以处理负数,但如果不能,那对任何人都没有用。