2

与使用“new”相比,我们可以使用“make_shared”更快、更安全地创建对象。例如,

shared_ptr<Dog> p = make_shared<Dog>("Luther"). 

如果我需要创建一个对象数组(例如 Dog[3]),是否可以使用“make_shared”而不是“new”?此外,是否可以通过 make_shared 方法使用自定义删除功能?

4

1 回答 1

0
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 次分配。

于 2018-12-31T02:43:17.513 回答