【发布时间】:2015-12-03 08:53:33
【问题描述】:
我只是无法理解std::enable_shared_from_this::shared_from_this 如何返回一个与现有指针共享所有权的共享指针。换句话说,你做this:
std::shared_ptr<Foo> getFoo() { return shared_from_this(); }
因此,当您调用 getFoo 时,它究竟是如何获得另一个 shared_ptr 来共享所有权而不是创建一个拥有相同 this 的单独 shared_ptr。
我需要理解这一点才能理解如何从某个对象创建 shared_ptr ,这些对象都增加相同的引用计数,而不是初始化单独的 shared_ptrs。
【问题讨论】:
-
我看过描述通用实现的注释。在此之前,我也看过源代码。但是无法理解当第一个 shared_ptr 在类之外创建时,这个
weak_ptr是如何被初始化的。一个类无法知道我们已经将它的指针封装在一些shared_ptr中。 -
你也应该看看
std::shared_ptr的来源。该注释明确指出,那里的代码确实检测到std::enable_shared_from_this作为基类的存在。
标签: c++ c++11 shared-ptr