下面的代码是表示存储器管理的不良例子的图。项目永远不会被分配,因为它的临时副本将被返回。如何避免返回一个临时对象(C++)
我已经冲刷和关闭数周的编程论坛,但还没有找到一个明确的解释,如何正确的返回类型项目的有效实例*而被取消分配允许项目。 换句话说,完成相同的返回值并允许项目被取消分配的代码的更好的替代方法是什么?
Item* Inventory::add(const string& name)
{
Item* item = new Item(name);
...(some other code here)...
return item;
}
谢谢!
怎么样'的std ::的unique_ptr- '? –
我不明白为什么这是一个问题。您已经将唯一指向_item_的指针副本返回给客户端 - 现在客户端的工作是将其分配给客户端。只需在合同/文件/意见中明确说明这一事实。 – DaoWen