看板 C_and_CPP 關於我們 聯絡資訊
( *[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
jerohands:多一行 設成 NULL 試試 06/30 15:10
jerohands:你有定義 copy constructor 嗎 06/30 15:12
jerohands:你在呼叫 vector 的 push_back 是建立一個"副本"給它 06/30 15:12
jerohands:已經不是你原先的建立的物件 06/30 15:13
Arim:請問樓上大大的想法是說,多消滅的那個是副本?那照理說每次消 06/30 15:59
Arim:滅的是兩個,一個是原本的 ,一個是副本,可是我會有累加的情形 06/30 15:59
Arim:而不是每次都固定兩個,還是我的理解錯誤? 06/30 15:59
jerohands:是用的容器的問題 06/30 16:58
jerohands:vector的elem改存指標,物件改為物件指標用new的方式 06/30 16:59
jerohands:這樣刪除的就只是指標的副本而不是指標指的記憶體區塊 06/30 16:59
jerohands:最後結束前 針對容器內的指標作delete動作 06/30 17:02
jerohands:注意 new 和 delete 的次數要相等 06/30 17:02
jerohands:更正 刪除的是原先的指標,vector 存的是指標副本 06/30 17:05