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 scopestd::shared_ptr
RAII,资源管理,引用计数指针
std::make_shared
std::weak_ptr
防止循环引用计数,和shared_ptr配套使用
最后更新于
这有帮助吗?