0
我有一個對象的地圖,我將一個對象複製到本地變量,然後刪除地圖中的對象。當我使用本地對象時,這會造成問題嗎?C++對象的地圖本地副本
std::map<int, obj>::iterator it2 = mymap.find(objnum);
mylocalobj = it2->second;
mymap.erase(it2);
//continue working on mylocalobj
我有一個對象的地圖,我將一個對象複製到本地變量,然後刪除地圖中的對象。當我使用本地對象時,這會造成問題嗎?C++對象的地圖本地副本
std::map<int, obj>::iterator it2 = mymap.find(objnum);
mylocalobj = it2->second;
mymap.erase(it2);
//continue working on mylocalobj
複製是關鍵詞這裏,如果你已經在地圖複製的對象,那麼會發生什麼原來的不再是問題,除非你還沒有實現在正確複製語義你obj
類。
如果你還沒有這樣做,那麼你應該把你的代碼視爲竊聽。
我應該考慮什麼才能正確複製包括語義? –
這取決於你的班級,有時你不需要做任何事情。關鍵問題通常是你的類有析構函數嗎?如果是這樣,那麼你需要正確地爲你的類實現複製構造函數和賦值運算符。你可以谷歌的'三的規則'更詳細的幫助。 – john
這個鏈接,例如http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three – john