跳转至

enable_shared_from_this

  • 参考
  • enable_shared_from_this 是模板类,当一个类继承此类时,可以调用 shared_from_this() 函数返回此类的 shared 指针,作用相当于一个 shared 指针赋值给另一个 shared 指针。
  • 示例
#include <memory>
#include <iostream>

struct Good : std::enable_shared_from_this<Good> // 注:公开继承
{
    std::shared_ptr<Good> getptr() {
        return shared_from_this();
    }
};

struct Best : std::enable_shared_from_this<Best> // 注:公开继承
{
    std::shared_ptr<Best> getptr() {
        return shared_from_this();
    }
    // 无公开构造函数,仅工厂函数,故无法令 getptr 返回 nullptr 。
    [[nodiscard]] static std::shared_ptr<Best> create() {
        // 不使用 std::make_shared<Best> ,因为构造函数为私有。
        return std::shared_ptr<Best>(new Best());
    }
private:
    Best() = default;
};