← 模式

共享所有权

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 行 演示了与一个函数共享该对象的所有权。也就是说,mainfunc 都可以访问同一个 foo 对象。当一个对象的所有权被共享时,只有当所有拥有它的 std::shared_ptr 都被销毁后,该对象才会被销毁。

在其他情况下,你可能希望转移对象的唯一所有权

贡献者

  • Joseph Mansfield

最后更新

2018年8月27日

来源

在 GitHub 上 Fork 此模式

分享