FreeBSD Manual Pages
std::enable...d_from_this(3) C++ Standard Libary std::enable...d_from_this(3) NAME std::enable_shared_from_this::shared_from_this - std::en- able_shared_from_this::shared_from_this Synopsis std::shared_ptr<T> shared_from_this(); (1) std::shared_ptr<T const> shared_from_this() const; (2) Returns a std::shared_ptr<T> that shares ownership of *this with all existing std::shared_ptr that refer to *this. Effectively executes std::shared_ptr<T>(weak_this), where weak_this is the private mutable std::weak_ptr<T> member of enable_shared_from_this. Notes It is permitted to call shared_from_this only on a previously shared object, i.e. on an object managed by std::shared_ptr (in particular, shared_from_this cannot be called during construction of *this). Otherwise the behavior is undefined (until C++17) std::bad_weak_ptr is thrown (by the shared_ptr constructor from a default-constructed weak_this) (since C++17). Return value std::shared_ptr<T> that shares ownership of *this with pre-existing std::shared_ptrs Example // Run this code #include <iostream> #include <memory> struct Foo : public std::enable_shared_from_this<Foo> { Foo() { std::cout << "Foo::Foo\n"; } ~Foo() { std::cout << "Foo::~Foo\n"; } std::shared_ptr<Foo> getFoo() { return shared_from_this(); } }; int main() { Foo *f = new Foo; std::shared_ptr<Foo> pf1; { std::shared_ptr<Foo> pf2(f); pf1 = pf2->getFoo(); // shares ownership of object with pf2 } std::cout << "pf2 is gone\n"; } Output: Foo::Foo pf2 is gone Foo::~Foo See also shared_ptr smart pointer with shared object ownership semantics (C++11) (class template) http://cppreference.com 2022.07.31 std::enable...d_from_this(3)
NAME | Synopsis | Notes | Return value | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::enable_shared_from_this::shared_from_this&sektion=3&manpath=FreeBSD+Ports+15.0>
