Я написал статический метод фабрики, который возвращает новый объект Foobar, заполненный из другого объекта данных. Недавно я был одержим семантикой владения и задаюсь вопросом, правильно ли я передаю мысль, заставляя этот фабричный метод возвращать unique_ptr
.
class Foobar {
public:
static unique_ptr<Foobar> factory(DataObject data);
}
Я хочу сказать клиентскому коду, что указатель принадлежит ему. Без уникального указателя я бы просто вернул Foobar*
. Однако я хотел бы принудительно удалить эту память, чтобы избежать возможных ошибок, поэтому unique_ptr
кажется подходящим решением. Если клиент хочет продлить время жизни указателя, он просто вызывает .release()
, как только получит unique_ptr
.
Foobar* myFoo = Foobar::factory(data).release();
Мой вопрос состоит из двух частей:
unique_ptr
вместо необработанного указателя?