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

网站建设模板报价网站代码备份

网站建设模板报价,网站代码备份,广州外贸营销网站建设公司,搭建电商分销系统PS:智能指针简单应用看这里 http://t.csdn.cn/qN7IK 1.智能指针的介绍 在C中#xff0c;智能指针有三个版本#xff0c;分别为#xff1a; auto_ptr unique_ptr shared_ptr 这三个版本的智能指针中#xff0c;shared_ptr最为完善#xff0c;auto_ptr基本上没有太大用…PS:智能指针简单应用看这里  http://t.csdn.cn/qN7IK 1.智能指针的介绍 在C中智能指针有三个版本分别为 auto_ptr  unique_ptr shared_ptr  这三个版本的智能指针中shared_ptr最为完善auto_ptr基本上没有太大用处unique_ptr的使用场景并不多。对于智能指针来说需要实现RAII和重载operator*和operator-使它具有像指针一样的行为。 2.智能指针分析 2.1 auto_ptr版本 auto_ptr简单实现 templateclass Tclass Auto_ptr{public://管理权转移 auto_ptrAuto_ptr(T* ptr):_ptr(ptr){}Auto_ptr(Auto_ptrT ptr):_ptr(ptr._ptr){ptr._ptrnullptr;}T operator(const T ptr){if (this ! ptr){if (_ptr){cout Delete: _ptr endl;delete _ptr;}_ptr ptr._ptr;ptr._ptr nullptr;}return *this;}//析构函数需要写重载不同常见需要不同析构函数/*~Auto_ptr(){if (_ptr){delete _ptr;}}*/T operator*(){return *this;}T* operator-(){return this;}private:T* _ptrnullptr;};由于auto_ptr支持拷贝构造为了确保指针所有者唯一这里转移了所有权转移所有权之后导致了被拷贝的为空了这是一大缺点导致auto_ptr被遗弃。 2.2.unique_ptr的使用    templateclass Tclass Unique_ptr{public:Unique_ptr(T* ptr):_ptr(ptr){}Unique_ptr(Auto_ptrT ptr) delete;T operator(const T ptr) delete;/*~Auto_ptr(){if (_ptr){delete _ptr;}}*/T operator*(){return *this;}T* operator-(){return this;}private:T* _ptr nullptr;};unique_ptr的底层直接没有使用拷贝构造和赋值重载导致它只能使用在不需要拷贝构造和复制重载的场景上所以unique_ptr的缺点为unique_ptr 不共享它的指针。 它无法复制到其它unique_ptr无法通过值传递到函数也无法用于需要副本的任何标准模板库 (STL) 算法。 只能移动unique_ptr 。 这意味着内存资源所有权将转移到另一 unique_ptr并且原始 unique_ptr 不再拥有此资源。 2.3 shared_ptr的使用 templateclass Tclass Shared_ptr{public:Shared_ptr(T* ptrnullptr):_ptr(ptr),_Pcount(new int(1)){;}void Release(){if (--(*_Pcount) 0){cout Delete: _ptr endl;delete _ptr;delete _Pcount;}}~Shared_ptr(){Release();}Shared_ptr(Smart_ptrT ptr):_ptr(ptr){(*_Pcount);ptr nullptr;}Shared_ptr operator(Smart_ptr ptr){if (_ptr ptr._ptr)return *this;Release();--(*_Pcount);_ptr ptr._ptr;_Pcount ptr._Pcount;*_Pcount;return *this;}T operator*(){return *_ptr;}T* operator-(){return _ptr;}private:T* _ptr;int* _Pcount;};在unique_ptr的基础上新增加了一个版本为shared_ptr版本。 基本原理就是记录对象被引用的次数当引用次数为 0 的时候也就是最后一个指向该对象的共享指针析构的时候共享指针的析构函数就把指向的内存区域释放掉。 特点:它所指向的资源具有共享性即多个shared_ptr可以指向同一份资源并在内部使用引用计数机制来实现这一点。 共享指针内存每个 shared_ptr 对象在内部指向两个内存位置 指向对象的指针用于控制引用计数数据的指针。 当新的 shared_ptr 对象与指针关联时则在其构造函数中将与此指针关联的引用计数增加1。 当任何 shared_ptr 对象超出作用域时则在其析构函数中它将关联指针的引用计数减1。如果引用计数变为0则表示没有其他 shared_ptr 对象与此内存关联在这种情况下它使用delete函数删除该内存。 shared_ptr像普通指针一样使用可以将*和-与 shared_ptr 对象一起使用也可以像其他 shared_ptr 对象一样进行比较。 但是对于shared_ptr来说依然有一个缺点如果是循环引用那么将会出现bug这时候就需要使用weak_ptr. 2.4 weak_ptr使用 weak_ptr是一个弱引用的智能指针它可以与shared_ptr一起使用。weak_ptr不会增加所管理的对象的引用计数因此它不会影响对象的生命周期。可以通过weak_ptr的lock()成员函数来获取一个指向所管理的对象的shared_ptr。 3.总结 3.1 智能指针原理 智能指针解决问题的思想将常规指针进行包装当智能指针对象过期时让它的析构函数对常规指针进行内存释放。 auto_ptrC98的方案C11已经废弃采用所有权模式对于特定的对象只能有一个智能指针可拥有它这样只有拥有对象的智能指针的析构函数会删除该对象。然后让赋值操作转让所有权。 unique_ptr替代 auto_ptr也是采用所有权模式实现独占式拥有或严格拥有概念保证同一时间内只有一个智能指针可以指向该对象。 shared_ptr采用引用计数实现共享式拥有概念。多个智能指针可以指向相同对象该对象和其相关资源会在最后一个引用被销毁时候释放。它使用引用计数来表明资源被几个指针共享。例如赋值时计数将加 1而指针过期时计数将减 1。仅当最后一个指针过期时才调用 delete。 weak_ptr该类型指针通常不单独使用没有实际用处只能和 shared_ptr 类型指针搭配使用。weak_ptr 类型指针并不会影响所指堆内存空间的引用计数可以用来解决循环引用问题。 3.2 使用场景 如果在程序中使用new 从堆自由存储区分配内存等到不再需要时应使用 delete 将其释放如果忘记释放则会产生内存泄露。C 引入了智能指针 以帮助自动完成这个过程。智能指针是行为类似于指针的类对象。如果程序要使用多个指向同一个对象的指针应该选择shared_ptr如果程序不需要多个指向同一个对象的指针则可以使用unique_ptr;如果使用new [] 分配内存应该选择 unique_ptr;如果函数使用new 分配内存并返回指向该内存的指针将其返回类型声明为 unique_ptr 是不错的选择。
http://www.zqtcl.cn/news/909248/

相关文章:

  • 苍梧县网站建设南京网站建设 雷仁网络
  • 四川网站制作成都wordpress 移动支付
  • 山西网站开发二次开发做自媒体可以参考的外国网站
  • 合肥 网站设计大学生创新创业大赛项目计划书
  • 北京网站主题制作做婚恋网站怎么样
  • 卖设计图的网站低代码开发平台公司
  • 建设银行顺德分行网站中国建筑装饰公司排名
  • 百度网站提交入口百度国内打开google网页的方法
  • 上海高端品牌网站制作wordpress返利主题
  • 网站建设会遇到哪些难题安阳网站如何做优化
  • 哈德网站建设使用wordpress创建企业官网
  • 新品销售网站建设建设银行网站怎么登陆密码
  • 外贸营销主题怎么写seo薪资
  • 手机音乐网站源码关键路径
  • 网站制作哪些官方静态网站模板
  • 网站开发seo网站排名优化服务
  • 佛山营销网站开发帝国cms网站公告怎么做
  • 2_试列出网站开发建设的步骤在哪里进行网站域名的实名认证
  • 个人网站做博客还是做论坛网络服务推广
  • 遵义网站制作小程序辛集做网站
  • 做逆战网站的名字吗网站维护员
  • 浏览器收录网站重庆网上房地产网
  • 门户网站建设哪专业wordpress爆破密码字典
  • 响应式网站的制作app开发公司加盟
  • 建设部安全事故通报网站sem是什么分析方法
  • 北京网站制作出名 乐云践新手机建站专家
  • 做机械有什么兼职网站安徽网站优化怎么做
  • 网站建设规划semir是什么品牌
  • 网站建设开发环境自学服装设计下载
  • 南京网站建设公司哪家好设计教程网站有哪些