c++ - 将 std::unique_ptr 传递给辅助函数

标签 c++ c++11 stl smart-pointers unique-ptr

这是正确的方法吗?

void helperFunc(MyClass *ptr)
{
    // do something with ptr,
}

unique_ptr<MyClass> p(new MyClass());
helperFunc(p.get());

或者我应该使用 shared_ptr 进行此类操作吗?

最佳答案

除非你想获得内存的所有权(在这种情况下你应该传递 shared_ptrunique_ptr),你为什么要使用指针?

通过引用传递。

void helperFunc(MyClass& obj)
{
    // do something with ptr,
}

unique_ptr<MyClass> p(new MyClass());
helperFunc(*p);

当您不想获得所有权时使用原始指针通常是好的,但在这里没有必要,除非您明确想要允许 nullptr(在这种情况下,是的,使用原始指针) .

关于c++ - 将 std::unique_ptr 传递给辅助函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14644351/

相关文章:

c++ - 不输出计算,只是0

c++ - boost::fusion 的目的是什么?

c++ - 可以将多个 boost::signal 连接到 1 个插槽吗?

c++ - 3D hasing : should I use unions as keys and how? 的 unordered_map 的最佳使用

c++ - std::vector emplace 和 std::vector emplace 成对

c++ - 在链表中插入字符串以段错误结束

c++ - 尽管不是 const,所有 <random> 发行版都是线程安全的吗?

c++ - 如何重构容器以直接使用谓词方法?

c++ - 通过指定成员的值删除 `std::set` 的成员

c++ - 编写 STL 兼容的迭代器