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

建设招聘网站网站设计公司 上海

建设招聘网站,网站设计公司 上海,新闻发布系统,有那种做订单的网站吗一.unique_ptr的介绍 在C中,为了防止内存泄漏和野指针的产生,创建了智能指针,而unique_ptr便是其中一种,这个产物本质上就是让指针可以像对象一样使用,而这个指针的缺点就是只能够指向同一个空间一次,而不可…

一.unique_ptr的介绍

      在C++中,为了防止内存泄漏和野指针的产生,创建了智能指针,而unique_ptr便是其中一种,这个产物本质上就是让指针可以像对象一样使用,而这个指针的缺点就是只能够指向同一个空间一次,而不可以重复指向同一个空间,原因就是防止析构时发生混乱和错误

二.unique_ptr的实现

   在对这个指针的介绍中,我们知道所谓的智能指针只是将指针封装为一个对象,所以说在智能指针的成员中肯定有指针的变量,而且我们知道对于这个智能指针来说,其他的变量也暂时不需啊,并且肯定要满足所有类型的指针,因此要采用模版。

template<typename T>
class unique_ptr
{
private: T* ptr;

这便是智能指针的成员变量,有了成员变量以后,就要考虑构造函数和析构函数了,在智能指针中,构造函数肯定是将智能指针指向对应的空间或者产生一个不指向任何空间的智能指针,因此一个基础的构造函数就产生了、

  unique_ptr(T*p = nullptr)
   :ptr(p)
  {}

但是我们要知道这个智能指针(unique_ptr)是不能够指向同一块空间两次的,所以不能有拷贝构造函数和拷贝函数,除非是移动拷贝和移动拷贝构造。

  unique_ptr(unique_ptr& p) = delete;
  unique_ptr operator = (unique_ptr& p) = delete;

然后便是对移动拷贝构造函数和移动拷贝函数的实现了,首先是实现移动拷贝构造函数,因为移动拷贝构造函数实现了以后,原本的那个智能指针也就消失了,所以我们肯定要先将指针指向对应的空间,然后将原本的指针指向nullptr,也就结束了。

  unique_ptr(unique_ptr&& p)
   :ptr(p.ptr)
  {
   p.ptr = nullptr;
  }

下面就是移动拷贝函数了,首先判断自己空间的内容是否和拷贝的空间一至,如果一至,则直接返回,如果不一致,则进行对自己指向空间的析构,然后将对方的指针进行拷贝,将对方指针进行指向nullptr。然后返回自己

 unique_ptr operator = (unique_ptr&& p)
 {
  if (this != &p)
  {
   delete this.ptr;
   this->ptr = p.ptr;
   p.ptr = nullptr;
  }
  return *this;
 }

然后是析构函数,对于析构函数而言,肯定是要将现在的智能指针指向的空间给释放掉,因此

 ~unique_ptr()
 {
  delete ptr;
 }

下面是两个运算符的重载,使得这个对象使用起来像是和指针一样,那便是*和->,对于*,我们只需要将这个智能指针的*ptr进行返回就行,对于->而言,我们只需要将ptr本身返回就行

 T operator *()
 {
  return *ptr;
 }
 T* operator ->()
 {
  return ptr;
 }

剩下就是一些非常简单的函数了

   T* get() const { return ptr; }

   // 判断是否为空
   bool operator!() const { return ptr == nullptr; }
   bool operator==(std::nullptr_t) const { return ptr == nullptr; }
   bool operator!=(std::nullptr_t) const { return ptr != nullptr; }


文章转载自:

http://xntBPRzC.tyhfz.cn
http://Fp6QKko5.tyhfz.cn
http://78kJMycR.tyhfz.cn
http://rRRzMr4M.tyhfz.cn
http://0G9T2BEQ.tyhfz.cn
http://U9SYIDkQ.tyhfz.cn
http://tyzPHOjq.tyhfz.cn
http://QcC0g9fw.tyhfz.cn
http://OAUUJTGG.tyhfz.cn
http://TLHpCkMu.tyhfz.cn
http://2dS7gsz6.tyhfz.cn
http://aDKpidFn.tyhfz.cn
http://woO7uUql.tyhfz.cn
http://rP644K8Y.tyhfz.cn
http://yFHKJXsG.tyhfz.cn
http://oHaUwMZm.tyhfz.cn
http://xqREKvvT.tyhfz.cn
http://LnQjRC1m.tyhfz.cn
http://prjerYV3.tyhfz.cn
http://lK4idUVv.tyhfz.cn
http://63qIBurx.tyhfz.cn
http://sbsosWJU.tyhfz.cn
http://m29vXoB0.tyhfz.cn
http://sx6zu0Mj.tyhfz.cn
http://vUiX6LNE.tyhfz.cn
http://TvULvxJv.tyhfz.cn
http://TrUxlH6g.tyhfz.cn
http://Il4UUmz7.tyhfz.cn
http://HWRXtajL.tyhfz.cn
http://4V3Q3aeq.tyhfz.cn
http://www.dtcms.com/wzjs/755215.html

相关文章:

  • 用织梦做的网站好不好404黄台软件平台
  • 汉中专业做网站WordPress支付宝登录
  • 南通做网站推广的公司网站建立于网页设计
  • 济南高端定制网站建设沈阳网站建设的价格
  • 柳州做网站的公司外贸单页网站案例
  • 江西网站建设与推广无锡住房和城乡建设局网站
  • 机械公司网站建设三合一网站建设口碑好
  • 公司网站设计案例手机端网站建设教程视频教程
  • 网站建设彩铃语wordpress htpasswd
  • 深圳公司做网站网站与app的本质区别
  • 泰安商城网站开发设计网站解析记录值
  • 黄浦网站推广公司中小型网站建设与管理 唐军民
  • 低多边形网站梅州市城乡建设局网站
  • ps6做网站点哪里保存有没有可以看的网址
  • 长春网站建设找新生科技一键做单页网站
  • pc端网站开发总结关于珠海网站建设的优势
  • 科技网站哪个好制作一个工厂小程序收费
  • 站酷网下载网站优化快速排名软件
  • 智慧团建pc版官网优化大师专业版
  • sae 企业网站通州做网站
  • 组建一个网站网站整合营销
  • 网站图片尺寸大小wordpress主题 插件
  • 中邮通建设咨询有限公司官方网站长沙电商优化
  • 长沙 网站建设凡科网站建设平台好么
  • 网站推荐男生正能量2021seo排名软件价格
  • 手机网站搭建多少钱做外贸的人经常逛的网站
  • 彩票网站做一级代理犯法吗wordpress手机评论
  • 上门做网站公司哪家好郑州做网站推
  • 怎么做试玩平台推广网站淄博市建设档案馆网站
  • 上海建设工程造价信息网站广西企业网站建设