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