与使用“ new”相比,我们可以使用“ make_shared”更快,更安全地创建对象。例如,
shared_ptr<Dog> p = make_shared<Dog>("Luther").
如果我需要创建对象数组(例如Dog [3]),是否可以使用“ make_shared”代替“ new”?此外,是否可以通过make_shared方法使用自定义的删除功能?
答案 0 :(得分: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次分配。