C++ operator overloading

SUM2 = SUM = A+B+C; 請問如果我要寫像上面這樣的overloading要怎麼寫才行呢? (注意:A和B和C的值不可以被更動到) 如果我的加法用下面這種方式,雖然很通用,但是我的回傳值是跟記憶體要的,並且我用完並沒有辦法去做歸還。這樣的寫法Dev Cpp的compiler並沒有任何問題(當然),但是總感覺很奇怪 P.S.這個class是要拿來做大數運算的 BigInt &operator+(BigInt &bInt) { BigInt *SUM; SUM = new BigInt() ; SUM = *this + bInt; 這一行只是示意而已 return... show more SUM2 = SUM = A+B+C;

請問如果我要寫像上面這樣的overloading要怎麼寫才行呢? (注意:A和B和C的值不可以被更動到)


如果我的加法用下面這種方式,雖然很通用,但是我的回傳值是跟記憶體要的,並且我用... Cpp的compiler並沒有任何問題(當然),但是總感覺很奇怪

P.S.這個class是要拿來做大數運算的

BigInt &operator+(BigInt &bInt)
{
BigInt *SUM;

SUM = new BigInt() ;
SUM = *this + bInt; 這一行只是示意而已

return *SUM;
}


不知道這樣說明清不清楚,不清楚的話可以依照題目直接寫你們的做法也OK,為求簡單... Class。
Update: 感謝您認真的回答
不過a + b;雖然可以執行
sum = a + b;卻會出問題
出現以下error

no matching function for call to `BigInt::BigInt(BigInt)'


initializing argument 1 of `BigInt& BigInt::operator=(BigInt)'
Update 2: 當出使用會遺失記憶體的方式也是因為這個原因
還有想要請問,你提供的這個

"所以你的 operator + 應該變成一個 global function:"
"class BigInt"
--省略--

這個真的很棒,以前都沒學過,但是我在寫到"等於"的時候還是會出問題(跟上述一樣...
我想請問有加const和沒加const的差別!! 因為沒加不能用!!
還有Class有用reference和沒用有差很多??
Update 3: 這是程式碼
http://webhd.xuite.net/_oops/k609305200/9ik

稍微說明一下我程式碼內容,這樣比較好理解

class
{
private:
這邊都是運算用的function
public:
資料
解構function
建構function
回傳值function
overloading function
}

中間有參雜一些其他功用的function,有點點亂,請見諒。
Update 4: 哇!!
連k和i都被你看到了
您真用心!!!
小弟感動萬分
感謝
delete [] 的倒是沒注意到......= =|||

c = a;可以

可是
c = a + b;
還是不行,這是為什麼呢???
Update 5: 剛剛測試了一下,我如果是用Visual C++去跑程式compiler會過耶
不像Dev Cpp會跑出那個問題
不過Dev Cpp的這個問題沒辦法解決?? 這因該是某種原因才會造成的問題吧(我不知道為什麼)
Update 6: 還有小弟有個疑惑的地方
有加const和沒加const的差別在哪裡!!

傳參數的時候對這個超敏感的!!! 例如:
BigInt operator+(BigInt const &lhs, BigInt const &rhs)
{
BigInt sum;

sum = lhs + rhs; //這樣子也不能相加!!! 害我要再多用兩個變數。
....省略
}
Update 7: 出現的error訊息是這個,當初會用回傳參考也是因為用參考就不會有這個error... leak)



no matching function for call to `BigInt::BigInt(BigInt)'

圖片
http://photo.xuite.net/k609305200/4903630/1.jpg


順帶一提
c = a;
確實可以
c = a + b;才會出現這個error
1 answer 1