[問題] 有關運算子多載
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Visual C++ 2005
問題(Question):
我最近在學習C++,想建一個矩陣運算用的class,
然後使用運算子多載來實做矩陣乘法。
錯誤結果(Wrong Output):
程式碼已經上傳到下面的網址。
在計算c = a * b 時,似乎會產生一個暫存來儲存a * b的結果,再assign到c。
問題是我的矩陣是動態產生的,這個暫存在return時會呼叫解構式,
導致動態產生的矩陣被delete,所以在assign到c時會發生錯誤。
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/ty5qXpT9
直接貼到VC裡面編譯應該可以執行。
補充說明(Supplement):
為了避免被解構,我的想法是把JMatrix::operator*裡使用的
暫存JMatrix output(m, n) 宣告成static,
似乎是可行,但不知會不會有什麼問題?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.56.138
→
11/03 22:28, , 1F
11/03 22:28, 1F
推
11/03 22:36, , 2F
11/03 22:36, 2F
→
11/03 22:38, , 3F
11/03 22:38, 3F
→
11/03 22:39, , 4F
11/03 22:39, 4F
→
11/03 22:39, , 5F
11/03 22:39, 5F
感謝!搞懂原因了!
※ 編輯: wowslr 來自: 111.251.178.126 (11/03 22:54)
討論串 (同標題文章)