Мы могли бы использовать «make_shared», чтобы создать объект быстрее и безопаснее по сравнению с «новым».Например,
shared_ptr<Dog> p = make_shared<Dog>("Luther").
Если мне нужно создать массив объектов (например, Dog [3]), можно ли использовать «make_shared» вместо «new»?Кроме того, возможно ли использовать настраиваемую функцию удаления с методом make_shared?
auto parr = make_shared<std::array<Dog, 3>>(std::array<Dog, 3>{"Bob", "Charlie", "Alice"});
Если вам нужен общий указатель на n-й элемент ...
auto pelem = std::shared_ptr<Dog*>{p, p->data()+n};
, который выполняет 0 выделений.