← 模式
共享所有权
12345678910111213 | #include <memory> #include <utility> struct foo {}; void func(std::shared_ptr<foo> obj) { } int main() { std::shared_ptr<foo> obj = std::make_shared<foo>(); func(obj); } |
此模式采用 CC0 公共领域贡献 许可。
需要 c++11 或更新版本。
意图
与另一个代码单元共享动态分配对象的所有权。
描述
在 第 11 行,我们创建了一个 std::shared_ptr
,它拥有一个动态分配的 foo
对象(使用 std::make_shared
工具函数分配)。第 12 行 演示了与一个函数共享该对象的所有权。也就是说,main
和 func
都可以访问同一个 foo
对象。当一个对象的所有权被共享时,只有当所有拥有它的 std::shared_ptr
都被销毁后,该对象才会被销毁。
在其他情况下,你可能希望转移对象的唯一所有权。