Код ниже показывает плохой пример управления памятью; элемент никогда не выделяется, потому что вместо него возвращается временная копия.Как избежать возврата временного объекта (C++)
В течение нескольких недель я просматривал форумы программирования, но не нашел четкого объяснения относительно правильного возврата действительного экземпляра типа Item *, позволяя исключить выделение элемента. Другими словами, что является лучшей альтернативой этому коду, который выполняет одно и то же возвращаемое значение и тем не менее позволяет выделить элемент?
Item* Inventory::add(const string& name)
{
Item* item = new Item(name);
...(some other code here)...
return item;
}
Спасибо!
Как насчет 'std :: unique_ptr- '? –
Я не понимаю, почему это проблема. Вы вернули единственную копию указателя на _item_ клиенту - теперь это задача клиента, чтобы освободить его. Просто сделайте этот факт явным в контракте/документации/комментариях. – DaoWen