[問題] 請問一下destructor

看板C_and_CPP作者 (Arim5566)時間14年前 (2010/06/30 14:59), 編輯推噓1(1012)
留言13則, 2人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) destructor會連續呼叫 希望得到的正確結果: destructor在每次物件被消滅的時候只需要呼叫一次 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) dev c++ ,win7 有問題的code: (請善用置底文標色功能) http://nopaste.csie.org/5819f 補充說明: 各位板友好,小弟想請問一下 就是我的object在第一次被消滅之後會call一次destructor 我的object的宣告是寫在main的while(1)裡面 每次執行完這個while block的時候我的object會被消滅 這是ACM10066的題目 http://www.tcgs.tc.edu.tw/~sagit/luckycat/q10066.htm 我第一次輸入完畢之後 會呼叫一次的destructor 但是第二次之後會連續呼叫兩次.. 第三次會連續呼叫三次.. 在某些情況下我的程式會出錯.. 我的疑問是照我這樣的寫法destructor應該每次都只會呼叫一次,不太懂為甚麼會 有這種累加的情形? 請板友們不吝指教小弟一下 非常感謝^^ -- ~宅男的四個徵兆~ ∠□ ○ ! * \○/ ★    (○ ? ╦╦└□ " ○□═ □   □> ║║√√ ╦══╦ ∥    |\ 一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.172.240.165

06/30 15:10, , 1F
多一行 設成 NULL 試試
06/30 15:10, 1F

06/30 15:12, , 2F
你有定義 copy constructor 嗎
06/30 15:12, 2F

06/30 15:12, , 3F
你在呼叫 vector 的 push_back 是建立一個"副本"給它
06/30 15:12, 3F

06/30 15:13, , 4F
已經不是你原先的建立的物件
06/30 15:13, 4F

06/30 15:59, , 5F
請問樓上大大的想法是說,多消滅的那個是副本?那照理說每次消
06/30 15:59, 5F

06/30 15:59, , 6F
滅的是兩個,一個是原本的 ,一個是副本,可是我會有累加的情形
06/30 15:59, 6F

06/30 15:59, , 7F
而不是每次都固定兩個,還是我的理解錯誤?
06/30 15:59, 7F

06/30 16:58, , 8F
是用的容器的問題
06/30 16:58, 8F

06/30 16:59, , 9F
vector的elem改存指標,物件改為物件指標用new的方式
06/30 16:59, 9F

06/30 16:59, , 10F
這樣刪除的就只是指標的副本而不是指標指的記憶體區塊
06/30 16:59, 10F

06/30 17:02, , 11F
最後結束前 針對容器內的指標作delete動作
06/30 17:02, 11F

06/30 17:02, , 12F
注意 new 和 delete 的次數要相等
06/30 17:02, 12F

06/30 17:05, , 13F
更正 刪除的是原先的指標,vector 存的是指標副本
06/30 17:05, 13F
文章代碼(AID): #1CAkj7gY (C_and_CPP)