我在写一个bignum实现,并在其中重载了运算符+和=。这里是我的代码,做它:Overloading =在bignum实现中
BigNum& operator+(const BigNum& b) {
BigNum sum;
int carry=0;
for (int i=0; i<N;i++){
sum.dig[i]=(dig[i]+b.dig[i]+carry)%10;
carry=(dig[i]+b.dig[i]+carry)/10;
}
return sum;
}
BigNum& operator=(const BigNum& rhs) {
for (int i=0; i<N; i++){
dig[i]=rhs.dig[i];
}
return *this;
}
他们似乎都对自己的运作良好(我可以正确地分配BIGNUM到BIGNUM正确添加两个大数),但是当我试图将它们结合起来,我得到似乎是随机的答案。因此,如果A和B都是大数,没关系,如果我说
BigNum c=b;
和
cout<<a+b;
但
a=a+b;
给出了一个意想不到的结果。
什么是'dig'?它是如何定义的?你能给我们一些具体的例子输入和输出吗? – 2015-02-06 03:24:34