当前位置: 首页> 文旅> 旅游 > 乐清外贸网站建设_网站推广策划思路是什么_快速优化网站排名的方法_抖音推广运营

乐清外贸网站建设_网站推广策划思路是什么_快速优化网站排名的方法_抖音推广运营

时间:2025/7/9 1:23:25来源:https://blog.csdn.net/qq_45797625/article/details/147235177 浏览次数:0次
乐清外贸网站建设_网站推广策划思路是什么_快速优化网站排名的方法_抖音推广运营

我们以Connection类的shared智能指针为例说明,std::enable_shared_from_this<Connection> 是一个标准库模板类,它的作用是让一个类的对象能够安全地生成指向自身的 std::shared_ptr,即使该对象最初是通过普通指针或其他方式创建的。

作用

  1. 安全生成 std::shared_ptr:当一个对象已经被 std::shared_ptr 管理时,调用 shared_from_this() 方法可以生成一个新的 std::shared_ptr,而不会创建新的引用计数。
  2. 避免重复管理:如果直接用 std::shared_ptr 包装一个已经被 std::shared_ptr 管理的对象,会导致引用计数不一致,可能引发未定义行为。

底层原理

  1. 内部弱引用std::enable_shared_from_this 内部维护了一个 std::weak_ptr,指向当前对象。当 std::shared_ptr 管理该对象时,这个弱引用会被初始化。
  2. shared_from_this():调用 shared_from_this() 时,std::weak_ptr 会被提升为 std::shared_ptr,从而安全地返回一个共享指针。
  3. 绑定生命周期:只有当对象被 std::shared_ptr 管理时,shared_from_this() 才能正常工作。如果对象未被 std::shared_ptr 管理,调用 shared_from_this() 会导致未定义行为。

示例

#include <iostream>
#include <memory>class MyClass : public std::enable_shared_from_this<MyClass> {
public:std::shared_ptr<MyClass> getShared() {return shared_from_this();}
};int main() {auto obj = std::make_shared<MyClass>();auto sharedObj = obj->getShared();std::cout << "Use count: " << sharedObj.use_count() << std::endl; // 输出 2return 0;
}

注意事项

  • 必须确保对象是通过 std::shared_ptr 创建的,否则调用 shared_from_this() 会导致未定义行为。
  • 适用于需要在类内部生成 std::shared_ptr 的场景,例如回调函数或异步操作中需要延长对象生命周期的情况。
关键字:乐清外贸网站建设_网站推广策划思路是什么_快速优化网站排名的方法_抖音推广运营

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: