gpt4 book ai didi

c++ - 从工厂返回指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:47:12 26 4
gpt4 key购买 nike

从工厂返回指针的最佳方式是什么?它应该是 std::unique_ptr 还是 std::shared_ptr 或者只是一个原始指针?

此外,有人告诉我,如果存在包含,则应选择 std::unique_ptr,如果存在聚合,则应选择 std::shared_ptr。这是正确的方法吗?

最佳答案

您应该只在非常特殊的情况下考虑原始指针,例如将指针传递到 DLL 边界。

shared_ptrunique_ptr 之间,我的观点是后者。这使您的用户的界面更加灵活。如果他们愿意,他们总是可以将返回的 unique_ptr 转换为 shared_ptr,但更重要的是,他们还可以调用 unique_ptr::release 然后手动管理指针(可能不是一个好主意,但它使选项保持打开状态)。

如果您的工厂需要为返回的 unique_ptr 分配自定义删除器,您应该注意 unique_ptrshared_ptr 之间的行为差​​异of 的是,如果托管指针为nullptr,前者不会调用删除器,而后者会。因此,如果您的工厂可能返回 nullptr(可能作为失败条件),并且有人将 unique_ptr 转换为 shared_ptr,那么请确保删除器可以处理以 nullptr 作为参数的调用。

关于c++ - 从工厂返回指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13062106/

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