Существуют ли какие-либо различия между двумя фрагментами кода ниже? Кто-нибудь из них предпочтительнее другого?
оператор =
boost::shared_ptr<Blah> foo; // foo.ptr should be NULL
foo = boost::shared_ptr<Blah>(new Blah()); // Involves creation and copy of a shared_ptr?
reset
boost::shared_ptr<Blah> foo; // foo.ptr should be NULL
foo.reset(new Blah()); // foo.ptr should point now to a new Blah object
Примечание. Мне нужно определить shared_ptr, а затем установить его в другой строке, потому что я использую его в фрагменте кода, например:
boost::shared_ptr<Blah> foo;
try
{
foo.reset...
}
foo...