[問題] 一個疑似關於使用constructor的bug

看板C_and_CPP (C/C++)作者 (史蒂芬)時間12年前 (2014/04/23 18:46), 12年前編輯推噓0(0010)
留言10則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): 如同結果圖,有些是對的,有些則出現很大的數.. 感覺是有指標的使用問題... 但更直接的問題是operator+和-的部分 一開始宣告temp感覺毛毛的 不太確定 (之所以確定是+的問題是因為有用main函式裡 註解掉的那幾行測試,做+之前有set好,但做完 就會不對) 然後順便問問為什麼兩個乘法結果都沒跑出來 (159 189 219和 3 3 3) 題目大概的說明在補充說明裡. 餵入的資料(Input): 3 3 1 2 3 4 5 6 7 8 9 3 3 2 3 4 5 6 7 8 9 10 3 1 2 3 3 2 3 4 預期的正確結果(Expected Output): 3 5 7 9 11 13 15 17 19 3 5 7 159 189 219 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 錯誤結果(Wrong Output): http://ppt.cc/0ORA 如圖所示 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/YFPcndkZ 補充說明(Supplement): 使用者input兩個矩陣、兩個向量 讓他們矩陣及矩陣、向量及向量相加相減 以及矩陣及向量相乘 用的方法是動態二維陣列. 煩請有空的大大解惑<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.69.110 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1398249979.A.A73.html ※ 編輯: g12288 (140.113.69.110), 04/23/2014 18:49:25

04/23 18:52, , 1F
Rule of Three
04/23 18:52, 1F

04/23 19:35, , 2F
但是我該指到的地方應該有指到耶...真的抓不到bug
04/23 19:35, 2F

04/23 21:08, , 3F
如果我沒猜錯的話,問題就是temp
04/23 21:08, 3F

04/23 21:11, , 4F
temp在離開函數的時候會把你自己配置到ptr幹掉
04/23 21:11, 4F

04/23 21:13, , 5F
預設copy ctor和賦值運算子都是直接複製成員內容
04/23 21:13, 5F

04/23 21:14, , 6F
所以你拿到的指標應該就是個房子被拆掉了路牌,恩
04/23 21:14, 6F

04/23 21:16, , 7F
所以換個會告訴你使用記憶體錯誤的工具吧XD
04/23 21:16, 7F

04/23 21:40, , 8F
哈哈...一開始想說直接就宣告大一點的二維陣列 但就會覺得
04/23 21:40, 8F

04/23 21:41, , 9F
限制了範圍有點low 用指標來動態處理又經常會有問題....
04/23 21:41, 9F

04/23 21:41, , 10F
真的是兩難啊~~
04/23 21:41, 10F
文章代碼(AID): #1JLvdxfp (C_and_CPP)
文章代碼(AID): #1JLvdxfp (C_and_CPP)