我在寫一個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