跳转至

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;
};