如何使用make_shared创建相同类型的对象数组?

时间:2018-12-30 19:31:59

标签: c++11 shared-ptr make-shared

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

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

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

1 个答案:

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