std::make_shared
также доступен в C ++ 11. Обратите внимание, что make_shared
- это больше, чем просто удобная функция. Взгляните на следующий фрагмент кода:
make_shared<foobar>(1, 2);
shared_ptr<foobar>(new foobar(1, 2));
Оба оператора создают объект foobar
и создают shared_ptr
. Тем не менее, первый позволяет избежать выделения памяти для общего счетчика, поскольку для счетчика и объекта foobar будет использоваться один фрагмент памяти. Это невозможно со вторым оператором, поскольку память для foobar
выделяется до построения shared_ptr
.
Что я хочу сказать: нет, make_shared
не устарел, поскольку обеспечивает очень полезную оптимизацию.