推 kwpn: 呼叫fun完不會解構b1啊 10/29 23:47
→ descent: 你的 linked list 是自己寫的還是用 std::list 10/30 00:22
→ jobsdone: link list是我自己寫的 10/30 00:38
→ jobsdone: 那請問呼叫解構的東西是什麼呢 10/30 00:39
→ ralts: 是main跑完才解構的 10/30 00:56
※ 編輯: jobsdone (140.113.67.159), 10/30/2016 01:13:24
推 kwpn: 你可以建構時也列印 10/30 01:21
→ jobsdone: 我試了 只會在生成b1時 呼叫建構式 10/30 01:26
推 ilikekotomi: fun的回傳會呼叫copy ctor 他刪掉的不是你想的b1 10/30 01:31
→ ilikekotomi: 他解構的不是你想的b1 10/30 01:35
→ ilikekotomi: 這個情況解構的是回傳的物件 10/30 01:37
→ jobsdone: 所以link list的情形是我沒有copy constructor導致複製 10/30 01:40
→ jobsdone: 同一個地址 然後直接將同一個位置delete 所以結果錯誤 10/30 01:40
→ jobsdone: 嗎 10/30 01:40
→ jobsdone: 然後順便問一下copy constructor應該和重載=不一樣吧? 10/30 01:45
推 ilikekotomi: copy ctor沒寫的話 compiler會自動生成 10/30 01:45
→ ilikekotomi: 但如果你的class內有pointer的時候要自己寫 10/30 01:46
→ ilikekotomi: 我想錯誤原因很有可能是你講的情況 10/30 01:47
→ ilikekotomi: 兩個不一樣沒錯 但內容一般應該是一樣的 10/30 01:47
→ ilikekotomi: class有pointer要重新分配記憶體在把內容複製到 10/30 01:49
→ ilikekotomi: 新的位置上 =的寫法可以google copy-and-swap 10/30 01:50
→ jobsdone: 感謝 我明天試看看 10/30 01:50
→ ilikekotomi: 這樣copy ctor寫好 =就會跟著寫好了 10/30 01:51
推 neigence: 可以研究一下=operator 會產生一個b1的copy 10/30 12:31