我遇到很多次代碼,其中在構造函數和析構函數中調用std :: vector類成員的std :: vector :: clear()。std :: vector :: clear()在構造函數和析構函數中
我不明白爲什麼它的需要:
- 構造 - STD型的類成員:: vector的默認是空的,所以沒有必要要求明確()。
- 析構函數 - 類型std :: vector的類成員將作爲包含它的對象的標準銷燬的一部分被銷燬。作爲矢量銷燬的一部分,所有值對象包含在其中將被銷燬(如果堆分配了指向內存的指針,則應該將它們手動刪除),因此再次不需要調用clear()。
我錯過了什麼嗎?
不錯的術語,'巫術編程':) – xtofl 2009-10-19 20:51:49
設置一個指針爲null不是巫術,它對調試有很大的幫助。也可以防止你刪除同一個指針兩次,但沒有人會這樣做 - 對吧? – 2009-10-19 21:01:25
如果有的話,你想知道你刪除了同一個指針兩次。最好是大聲地失敗(並且瞭解它)而不是意外地成功(掩蓋一個會回來咬你的bug) – 2009-10-19 21:04:17