下面的代碼是表示存儲器管理的不良例子的圖。項目永遠不會被分配,因爲它的臨時副本將被返回。如何避免返回一個臨時對象(C++)
我已經沖刷和關閉數週的編程論壇,但還沒有找到一個明確的解釋,如何正確的返回類型項目的有效實例*而被取消分配允許項目。 換句話說,完成相同的返回值並允許項目被取消分配的代碼的更好的替代方法是什麼?
Item* Inventory::add(const string& name)
{
Item* item = new Item(name);
...(some other code here)...
return item;
}
謝謝!
怎麼樣'的std ::的unique_ptr- '? –
我不明白爲什麼這是一個問題。您已經將唯一指向_item_的指針副本返回給客戶端 - 現在客戶端的工作是將其分配給客戶端。只需在合同/文件/意見中明確說明這一事實。 – DaoWen