gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:26:34 25 4
gpt4 key购买 nike

与使用“new”相比,我们可以使用“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。

关于c++11 - 如何使用make_shared创建相同类型的对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53980771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com