当前位置: 首页 > wzjs >正文

网站基础功能快手秒赞秒评网站推广

网站基础功能,快手秒赞秒评网站推广,做长图的网站,互联网推广运营是干什么的在 C 中,std::shared_ptr 和 std::unique_ptr 是两种不同的智能指针,它们有不同的所有权语义,不能直接互换,但在特定条件下可以相互转换: 1. unique_ptr → shared_ptr (✅ 安全) // unique_ptr 可以转换为 shared_ptr…

在 C++ 中,std::shared_ptrstd::unique_ptr 是两种不同的智能指针,它们有不同的所有权语义,不能直接互换,但在特定条件下可以相互转换:

1. unique_ptrshared_ptr (✅ 安全)

// unique_ptr 可以转换为 shared_ptr(移动语义)
std::unique_ptr<MyClass> unique = std::make_unique<MyClass>();
std::shared_ptr<MyClass> shared = std::move(unique); // 所有权转移// 此时 unique 变为 nullptr
assert(unique == nullptr);

2. shared_ptrunique_ptr (❌ 不安全)

std::shared_ptr<MyClass> shared = std::make_shared<MyClass>();
// 以下转换是无效的!会编译错误
std::unique_ptr<MyClass> unique = shared; // 错误:没有转换函数

3. 特殊情况:当 shared_ptr 是唯一所有者时

if (shared.use_count() == 1) {// 危险操作:手动释放所有权(不推荐)MyClass* raw = shared.get();shared.reset(); // 放弃所有权std::unique_ptr<MyClass> unique(raw); // 接管所有权
}

⚠️ 警告:这种操作非常危险,容易导致双重释放!


关键区别:

特性std::unique_ptrstd::shared_ptr
所有权独占所有权共享所有权
复制语义不可复制(只能移动)可以复制
性能开销零开销(等同原始指针)有引用计数开销
循环引用风险需要配合 weak_ptr 避免
自定义删除器支持(类型安全)支持(类型擦除)

最佳实践:

  1. 优先使用 unique_ptr

    // 默认使用 unique_ptr
    auto resource = std::make_unique<Resource>();// 需要共享时再转换
    std::shared_ptr<Resource> shared_res = std::move(resource);
    
  2. 需要共享所有权时直接用 shared_ptr

    // 明确需要共享的场景
    auto shared = std::make_shared<SharedResource>();
    
  3. 避免所有权混用
    同一资源不应同时被两种智能指针管理。

转换工具函数(C++17+):

// unique_ptr → shared_ptr
template<typename T>
std::shared_ptr<T> make_shared_from_unique(std::unique_ptr<T>&& unique) {return std::shared_ptr<T>(std::move(unique));
}// shared_ptr → unique_ptr (危险!仅用于特殊情况)
template<typename T>
std::unique_ptr<T> make_unique_from_shared(std::shared_ptr<T> shared) {if (shared.use_count() != 1) throw std::logic_error("Not exclusive owner!");return std::unique_ptr<T>(shared.release()); // 需要自定义删除器支持
}

结论:

  1. unique_ptrshared_ptr:✅ 安全,通过移动语义实现
  2. shared_ptrunique_ptr:❌ 不安全,应避免
  3. 设计时应明确所有权策略,避免混用
  4. 当需要共享所有权时,直接从源头使用 shared_ptr
http://www.dtcms.com/wzjs/223720.html

相关文章:

  • 金融企业网站模板个人开发app可以上架吗
  • 怎么在静态网站基础上加动态百度一下你就知道搜索
  • 毕节市网站建设搜索引擎优化案例
  • 织梦网站管理系统百度注册新账号
  • 做ip资讯的网站百度图片搜索图片识别
  • 手机企业网站源码网站运营和维护
  • 网站规划建设与管理维护网站优化方式有哪些
  • 高端品牌包包seo关键词推广优化
  • wordpress和discuz结合seo内链优化
  • 华艺网站开发电话营销销售系统
  • b2b网站开发费用推广网络推广
  • 景点网站应该怎么做海豹直播nba
  • 2023年推广网站百度推广效果怎么样
  • 唐山有制作网站的没冯宗耀seo教程
  • 做微商进哪个网站安全短期培训学什么好
  • 企业网站系统建设毕业论文百度知道在线
  • o2o商城上的二级网站百度搜索引擎网站
  • 烟台市建委网站适合奖励自己的网站免费
  • 刚成立公司如何做网站百度推广培训机构
  • 东莞长安做网站seo需要掌握什么技能
  • WordPress 3.5火车头发布接口seo网站关键词优化哪家好
  • 青岛做网站建设河北seo网络推广
  • 做垃圾网站赚钱网店营销策略有哪些
  • 门户网站需要多少费用国内做网站的公司
  • 人人装修网网络营销优化
  • 网站开发源代码mvc百度招聘2022年最新招聘
  • 深圳最好的网站开发公司如何进行网站的推广
  • 我想来做外贸网站来推广百度指数首页
  • wordpress火车头5.0外链seo招聘
  • 建设网站遇到问题的解决方案百度文库账号登录入口