Что более часто встречается в вашем опыте: func1() или funct2()? Предположим, что func1 и func2 лучше не как метод класса Foo.Передача unique_ptr vs raw_ptr?
void func1(unique_ptr<Bar>& bar) { /* alter pointed to object's attributes */ }
void func2(Bar* const bar) { /* alter pointed to object's attributes */ }
class Foo
{
unique_ptr<Bar> bar;
void mutate_bar1(){ func1(bar); }
void mutate_bar2(){ func2(bar.get()); }
}
Это предполагает, конечно, что «изменение атрибутов» не требует ссылки на «бар» дольше, чем продолжительность функции (что в данном случае, вероятно, является разумным допущением). Если это так, вы, вероятно, не должны использовать 'unique_ptr' в первую очередь, если вы не собираетесь передавать право собственности на' std :: move() 'или что-то еще. – Kevin
@Kevin Точно. Если вы хотите, чтобы указатель выходил из-живого объекта, то сначала нужно начинать с 'std :: unique_ptr'. Вот почему я не вижу преимуществ, связанных с 'std :: unique_ptr'. – Galik