Какова наилучшая практика при возврате умного указателя, например boost:: shared_ptr? Должен ли я по умолчанию возвращать умный указатель или базовый необработанный указатель? Я родом из С#, поэтому, как правило, я всегда возвращаю интеллектуальные указатели, потому что он чувствует себя хорошо. Подобно этому (пропуская const-correctness для более короткого кода):
class X
{
public:
boost::shared_ptr<Y> getInternal() {return m_internal;}
private:
boost::shared_ptr<Y> m_internal;
}
Однако я видел, как некоторые опытные кодеры возвращали необработанный указатель и помещали исходные указатели в векторы. Каков правильный способ сделать это?