enable_shared_from_this
时间: 2023-05-01 19:01:00 浏览: 84
enable_shared_from_this 是 C++ 标准模板库(STL)中的一个类,它用于在类内部获取 std::shared_ptr 指针。该类允许在类内部从 this 指针获取 std::shared_ptr 指针,而不需要显式地将 this 指针传递给 std::make_shared 函数。
相关问题
class SessionMap : public std::enable_shared_from_this<SessionMap> 中函数enable_shared_from_this详解
`enable_shared_from_this` 是 C++11 引入的一个模板辅助类,目的是为了支持智能指针(如 `std::shared_ptr`)从内部对象动态获取自身引用。当一个类继承自 `enable_shared_from_this<T>`,其中 T 是该类本身,那么这个类的对象就能够通过 `shared_from_this()` 函数返回一个指向自身的共享所有权的指针。
在 `class SessionMap : public std::enable_shared_from_this<SessionMap>` 的情况下,当你有一个 `SessionMap` 对象并持有它的 `std::shared_ptr`,可以通过调用 `shared_from_this()` 来获取到指向同一个对象的共享指针。这对于事件驱动或者回调机制特别有用,因为可以确保即使对象被删除,由于存在共享引用,内存不会立即释放,直到最后一个引用消失。
举个简单的例子[^2]:
```cpp
class SessionMap : public std::enable_shared_from_this<SessionMap> {
public:
void handleCallback() {
auto shared_self = shared_from_this();
// 在这里,shared_self 可以传递给另一个线程或函数,
// 使得它们可以在适当的时候访问或修改 SessionMap 对象
}
};
```
enable_shared_from_this用法
enable_shared_from_this是一个模板类,它提供了一个函数shared_from_this,用于获得一个指向当前对象的shared_ptr。它的用法是,在类定义中继承enable_shared_from_this,并在本类中保存一个weak_ptr指向自身,然后通过shared_from_this获取该对象的shared_ptr。使用shared_ptr管理对象的好处是,可以预防内存泄漏和空悬指针的问题。但是需要注意的是,对象必须通过shared_ptr创建,否则使用shared_from_this将会出现未定义行为。
阅读全文