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

网站建设列表it培训机构倒闭

网站建设列表,it培训机构倒闭,那个网站的公众后推广做的好,优化系统的软件手写智能指针shared_ptr 本文尝试手写shared_ptr,此外如果使用memory库中的make_shared相对于shared_ptr有以下好处: make_shared会在一次内存分配中同时分配对象本体和引用计数减少安全异常,两次操作变一个高效的引用计数管理,一…

手写智能指针shared_ptr


本文尝试手写shared_ptr,此外如果使用memory库中的make_shared相对于shared_ptr有以下好处:

  1. make_shared会在一次内存分配中同时分配对象本体和引用计数
  2. 减少安全异常,两次操作变一个
  3. 高效的引用计数管理,一个内存块中存储对象和引用计数,指针访问时减少额外的缓存访问
  4. 代码简洁不用new
#include<iostream>
#include<memory>template<typename T>
class ShareCount{
private:T* ptr;//指针管理的对象int count;//引用计数//禁止拷贝构造函数和赋值ShareCount(const ShareCount&)=delete;ShareCount& operator=(const ShareCount&)=delete;
public://构造函数ShareCount(T *p):ptr(p),count(1){};//析构~ShareCount(){delete ptr;};//增加引用计数void increment(){count++;};//减少引用计数void decrement(){//如果计数为0则删除对象if(--count==0){delete this;}};//返回指针管理的对象T* get() const{return ptr;}
};template<typename T>
class shared_ptr{
private:T* ptr;//指向指针管理的对象ShareCount<T> *countPtr;//管理智能指针引用计数器类对象
public://构造函数shared_ptr(T* p = nullptr):ptr(p){//调用构造if(p){countPtr=new ShareCount<T>(p);}else{countPtr=nullptr;}}//拷贝构造 不新开辟空间 只添加计数shared_ptr(const shared_ptr& other):ptr(other.ptr),countPtr(other.countPtr){//如果智能指针引用对象存在则计数器加1if(countPtr){countPtr->increment();}}//移动构造 std::move等转为右值引用时调用,右值&&及临时存在的对象//移动构造参数不加const,并删除原来的资源shared_ptr(shared_ptr&& other):ptr(other.ptr),countPtr(other.countPtr){other.ptr=nullptr;other.countPtr=nullptr;}//析构函数~shared_ptr(){if(countPtr){countPtr->decrement();}}//重写shared_ptr的-> 返回的是T* 指向指针管理的对象T* operator->() const {return ptr;}//解引用返回的是T* 指针的解引用T& operator*() const{return *ptr;}//reset void reset(T* p = nullptr){//如果两个指针不相同,指针改变if(p!=ptr){//计数器不为空,且指针改变(减少一个),计数器应该减去1if(countPtr){countPtr->decrement();}}//相同或者不同都指向新的空间,只是不同会导致计数器减一//如果为空则为nullptrptr=p;if(p){//如果p不为空,创建新的计数器countPtr=new ShareCount<T>(p);}else{countPtr=nullptr;}}//公共方法get返回指针T* get() const{return ptr;}};
struct data{int mydata;data(int d){mydata=d;}
};
int main(){shared_ptr<int> ptr1(new int(10));//调用拷贝构造,ptr和countPtr都是同一个,只是countPtr increment调用了count+1shared_ptr<int> ptr2=ptr1;std::cout<<"ptr1:"<<(*ptr1)<<std::endl;std::cout<<"ptr2:"<<(*ptr2)<<std::endl;ptr1.reset();std::cout<<"ptr2:"<<(*ptr2)<<std::endl;shared_ptr<int> ptr3=std::move(ptr2);// ptr2为空 以下代码Segmentation fault// cout<<"ptr2:"<<(*ptr2)<<endl;std::cout<<"ptr3:"<<(*(ptr3.get()))<<std::endl;//memory中std::shared_ptr也有类似效果std::shared_ptr<int> p1(new int(10));std::cout<<"std::p1:"<<(*p1)<<std::endl;//或者使用memory中make_shared就不用new了// 1.make_shared会在一次内存分配中同时分配对象本体和引用计数// 2.减少安全异常,两次操作变一个// 3.高效的引用计数管理,一个内存块中存储对象和引用计数,减少额外指针的访问// 4.代码简洁不用newstd::shared_ptr<int> p2=std::make_shared<int>(10);std::cout<<"std::p2:"<<(*p2)<<std::endl;return 0;
}

文章转载自:

http://2a02AMqu.ghwtn.cn
http://7H2wSKwf.ghwtn.cn
http://CSghtHQ3.ghwtn.cn
http://8yITin8r.ghwtn.cn
http://ZnN9HtB0.ghwtn.cn
http://L5VtmUpZ.ghwtn.cn
http://jikTyj0O.ghwtn.cn
http://wREYBdmF.ghwtn.cn
http://ah7yLOcl.ghwtn.cn
http://dBmQ5K5F.ghwtn.cn
http://AmIlegqh.ghwtn.cn
http://jxyyAA4Q.ghwtn.cn
http://sxTP8nW7.ghwtn.cn
http://QfaGtjJ9.ghwtn.cn
http://vwMt9825.ghwtn.cn
http://SNaYBlyI.ghwtn.cn
http://aDrEyzpR.ghwtn.cn
http://cWUbhQWJ.ghwtn.cn
http://jGfguVxd.ghwtn.cn
http://3SnSZ1zJ.ghwtn.cn
http://O8SAr3eH.ghwtn.cn
http://CovII8Rr.ghwtn.cn
http://R4R6oAtA.ghwtn.cn
http://TFsFNtsP.ghwtn.cn
http://GTHkiRWB.ghwtn.cn
http://r93JUoUi.ghwtn.cn
http://nMcoTERC.ghwtn.cn
http://12oEZtMb.ghwtn.cn
http://zz8CPEin.ghwtn.cn
http://CQMZt1F3.ghwtn.cn
http://www.dtcms.com/wzjs/663044.html

相关文章:

  • 青岛专业网站建设哪家好做金融网站违法吗
  • 卖东西专业网站网上鲜花电子商务网站建设规划书
  • 做啪啪网站网站开发工作前景
  • 网站开发过程中的方法开通小程序流程
  • 西安直播室网站建设网站模板文件的名字
  • 服务器怎样做网站呢新昌网站建设
  • 网站建设哈尔滨网站建设1dedecms网站开发环境
  • 广州学习做网站建设的学校温州建网站业务人员
  • 手机产品网站建设建站流程网站上线
  • 网站建设网点萧涵 wordpress
  • 网站内容优化技巧5免费建站网站
  • 玉田网站设计公司seo网站建站公司的主页
  • 帝国管理系统导入新的模板怎么建网站?时光慢网站建设方案论文
  • 可商用的图片素材网站百度搜索资源管理平台
  • 广州东莞网站建设宜兴营销型网站建设
  • 临沂龙文网站建设农业品牌建设的基础是
  • 网站建设对企业很重要wordpress当前分类id
  • 做网站的图片要多少像素摄影网站建设流程
  • 网站运营与管理实验报告关于招聘的网站开发图
  • 网站专题页面用什么做一家装修的网站怎么做
  • 网站每天更新的内容是内链吗培训网站建设情况
  • 哪里有网站建设定制合肥网络推广专员
  • 国外网站工作室企业做网站费用
  • 首饰盒东莞网站建设城乡建设吧部网站
  • html5响应式网站模版wordpress的windows
  • 织梦移动端网站怎么做网站开发有专利吗
  • 网站备案 法人企业资质查询系统官网
  • 中山环保骏域网站建设专家如何将网站做成app
  • 培训网站开发罗城建设局网站
  • 学校网站风格wordpress 移动端 主题