5.smart pointer

智能指针,std::unique_ptr, std::shared_ptr, std::weak_ptr

std::unique_ptr

  • 只含有一个的指针

  • std::move 配合使用

std::unique_ptr<Foo> p1 { new Foo{} };  // `p1` owns `Foo`
if (p1) {
  p1->bar();
}

{
  std::unique_ptr<Foo> p2 {std::move(p1)};  // Now `p2` owns `Foo`
  f(*p2);

  p1 = std::move(p2);  // Ownership returns to `p1` -- `p2` gets destroyed
}

if (p1) {
  p1->bar();
}
// `Foo` instance is destroyed when `p1` goes out of scope

std::shared_ptr

  • RAII,资源管理,引用计数指针

  • std::make_shared

std::weak_ptr

  • 防止循环引用计数,和shared_ptr配套使用

最后更新于

这有帮助吗?