C++(13) enable_shared_from_this
std::enable_shared_from_this<> 是 C++11 引入的一个模板类,用于在一个类中安全地创建 std::shared_ptr 实例。
std::enable_shared_from_this<> 的主要设计目的是解决在类的成员函数中安全地创建 std::shared_ptr 实例的问题。具体来说,它避免了以下两个常见问题:
多次销毁对象: 如果在类的成员函数中直接使用 std::shared_ptr(this) 创建一个新的 std::shared_ptr,会导致创建多个独立的控制块,从而导致对象被多次销毁。
未定义行为: 如果在没有 std::shared_ptr 管理当前对象的情况下调用 shared_from_this(),会导致未定义行为。
使用方法
基本用法
- 继承 std::enable_shared_from_this<>:
要让一个类能够安全地创建 std::shared_ptr,需要让该类继承 std::enable_shared_from_this<>。
class MyClass : public std::enable_shared_from_this<MyClass> {
public:
void doSomething() {
std::shared_ptr<MyClass> self = shared_from_this();
// 使用 self 进行操作
}
};
- 创建 std::shared_ptr 实例: 在类的外部创建 std::shared_ptr 实例,并调用成员函数。

最低0.47元/天 解锁文章
557

被折叠的 条评论
为什么被折叠?



