青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++分析研究  
C++
日歷
<2013年10月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789
統(tǒng)計(jì)
  • 隨筆 - 92
  • 文章 - 4
  • 評(píng)論 - 4
  • 引用 - 0

導(dǎo)航

常用鏈接

留言簿

隨筆檔案

文章檔案

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

 

  一、智能指針
  在C++語(yǔ)言編程時(shí),當(dāng)類中有指針成員時(shí),一般有兩種方式來管理指針成員:一是采用值型的方式管理,每個(gè)類對(duì)象都保留一份指針指向的對(duì)象的拷貝;另一種更優(yōu)雅的方式是使用智能指針,從而實(shí)現(xiàn)指針指向的對(duì)象的共享。
  智能指針(smartpointer)的一種通用實(shí)現(xiàn)技術(shù)是使用引用計(jì)數(shù)(referencecount)。智能指針類將一個(gè)計(jì)數(shù)器與類指向的對(duì)象相關(guān)聯(lián),引用計(jì)數(shù)跟蹤該類有多少個(gè)對(duì)象共享同一指針。
  每次創(chuàng)建類的新對(duì)象時(shí),初始化指針并將引用計(jì)數(shù)置為1;當(dāng)對(duì)象作為另一對(duì)象的副本而創(chuàng)建時(shí),拷貝構(gòu)造函數(shù)拷貝指針并增加與之相應(yīng)的引用計(jì)數(shù);對(duì)一個(gè)對(duì)象進(jìn)行賦值時(shí),賦值操作符減少左操作數(shù)所指對(duì)象的引用計(jì)數(shù)(如果引用計(jì)數(shù)為減至0,則刪除對(duì)象),并增加右操作數(shù)所指對(duì)象的引用計(jì)數(shù);調(diào)用析構(gòu)函數(shù)時(shí),析構(gòu)函數(shù)減少引用計(jì)數(shù)(如果引用計(jì)數(shù)減至0,則刪除基礎(chǔ)對(duì)象)。
  智能指針詳解:
  包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_array、boost::weak_ptr、boost::intrusive_ptr
  二、智能指針的一般實(shí)現(xiàn)  www.jamo123.com
  智能指針通常使用類模板來實(shí)現(xiàn)。模擬類指針的各種行為。但是,其最重要的作用是對(duì)類指針成員的管理,防止懸垂指針的出現(xiàn)。
  template<classT>
  classSmartPointer{
  public:
  SmartPointer(T*t):pt(t){}
  T&operator*(){return*pt;}
  T*operator->(){returnpt;}
  private:
  T*pt;
  };
  三、引用計(jì)數(shù)的實(shí)現(xiàn)
  為了實(shí)現(xiàn)引用計(jì)數(shù),我們定義一個(gè)_counter類來記錄引用次數(shù),把_counter類的所有成員設(shè)定為private,因?yàn)槠渌念愋筒⒉恍枰L問_counter,只有SmartPointer對(duì)其進(jìn)行操作就行了,SmartPointer將設(shè)為其友元類。
  class_counter{
  template<classT>friendclassSmartPointer;
  _counter(intu):use(u){}
  ~_counter(){}
  intuse;
  };
  在SmartPointer類中,保留_counter的指針。
  template<classT>
  classSmartPointer{
  public:
  SmartPointer(T*t):pc(new_counter(1)){
  cout《"SmartPointer::SmartPointer()invodeduseis:"《pc->use《endl;
  this->pt=t;
  }
  SmartPointer(SmartPointer<T>&rhs){
  this->pc=rhs.pc;
  this->pt=rhs.pt;
  this->pc->use++;
  cout《"SmartPointercopyinvokeduseis:"《pc->use《endl;
  }
  ~SmartPointer(){
  pc->use--;
  cout《"SmartPointer::~SmartPointer()invodeduseis:"《pc->use《endl;
  if(pc->use==0)
  {
  deletept;
  deletepc;
  }
  }
  SmartPointer<T>&operator=(SmartPointer<T>rhs){
  if(rhs==*this){
  return*this;
  }
  this->pt=rhs.pt;
  this->pc=rhs.pc;
  this->pc->use++;
  cout《"SmartPointer::operator=()invokeduseis:"《pc->use《endl;
  return*this;
  }
  private:
  T*pt;
  _counter*pc;
  };
  例如:我們有一個(gè)HasPtr類,其類成員中有一個(gè)為指針*p.
  classHasPtr{
  public:
  HasPtr(intval):value(val),p(newint(3)){
  cout《"HasPtr::HasPtr()invoked"《endl;
  }
  ~HasPtr(){deletep;cout《"HasPtr::~HasPtr()invoded"《endl;}
  private:
  int*p;
  intvalue;
  };
  如果如下調(diào)用:
  HasPtr*php=newHasPtr(3);
  SmartPointer<HasPtr>psp(php);
  SmartPointer<HasPtr>npsp(psp);
  我們現(xiàn)在有兩個(gè)智能指針對(duì)象,指向同一個(gè)HasPtr對(duì)象,
實(shí)現(xiàn) www.lefeng123.com
  _counter的use成員(引用計(jì)數(shù))為2.
  四、測(cè)試
  intmain(void)
  {
  HasPtr*php=newHasPtr(3);
  SmartPointer<HasPtr>psp(php);
  SmartPointer<HasPtr>npsp(psp);
  SmartPointer<HasPtr>nnpsp=npsp;
  return0;
  }

posted on 2014-03-18 17:13 HAOSOLA 閱讀(272) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


 
Copyright © HAOSOLA Powered by: 博客園 模板提供:滬江博客
PK10開獎(jiǎng) PK10開獎(jiǎng)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            蜜臀99久久精品久久久久久软件| 亚洲欧洲中文日韩久久av乱码| 亚洲精品小视频| 午夜精品久久久久久久白皮肤| 欧美日产一区二区三区在线观看| 国产精品久久999| 99国产一区| 老司机一区二区三区| 久久阴道视频| 1769国内精品视频在线播放| 亚洲自拍偷拍视频| 午夜精品久久久久久久| 国产精品视频你懂的| 一区二区三区免费看| 亚洲麻豆av| 欧美日韩国产bt| 99国产精品久久久久久久成人热| 欧美黄色片免费观看| 欧美**字幕| 亚洲精品欧美在线| 亚洲电影免费观看高清| 欧美日韩不卡在线| 亚洲自拍16p| 9l视频自拍蝌蚪9l视频成人| 国产区精品在线观看| 久久爱www久久做| 亚洲一区二区三区免费观看| 在线欧美日韩国产| 亚洲成在人线av| 欧美精品久久99| 欧美在线观看你懂的| 久久精品国产2020观看福利| 国产欧美日韩高清| 久久五月婷婷丁香社区| 久久亚洲国产精品日日av夜夜| 亚洲高清av在线| 中文国产一区| 国产一区自拍视频| 欧美高清成人| 国产无遮挡一区二区三区毛片日本| 免费不卡中文字幕视频| 欧美精品免费视频| 免费看av成人| 欧美视频久久| 亚洲免费播放| 亚洲免费观看高清完整版在线观看| 亚洲精品久久久久| 99热这里只有精品8| 在线观看亚洲一区| 亚洲九九精品| 国产一区二区三区高清播放| 亚洲毛片视频| 狠狠色狠色综合曰曰| 国产精品一区在线观看| 亚洲精品乱码久久久久久日本蜜臀| 国产精品扒开腿做爽爽爽视频| 久久久久久久久久看片| 国产精品久久久久久久久果冻传媒| 美女视频黄免费的久久| 国产精品电影观看| 一本久道综合久久精品| 激情综合久久| 亚洲免费在线看| 午夜精品在线观看| 欧美韩国在线| 男人的天堂亚洲在线| 精品不卡一区| 亚洲欧美另类在线观看| 亚洲精品自在久久| 欧美区在线观看| 欧美成人乱码一区二区三区| 国产日韩欧美精品综合| 性久久久久久| 欧美怡红院视频| 欧美日韩精品一二三区| 99re6这里只有精品视频在线观看| 激情伊人五月天久久综合| 午夜精品福利在线| 午夜精品影院| 国产精品高潮呻吟视频| 欧美国产极速在线| 亚洲电影av| 久久久久久香蕉网| 欧美sm重口味系列视频在线观看| 国产日韩在线看| 亚洲欧美一级二级三级| 亚洲综合色婷婷| 国产精品亚洲产品| 亚洲综合日韩| 久久精品网址| 国产视频一区二区在线观看 | 蜜桃av噜噜一区| 老色批av在线精品| 国产永久精品大片wwwapp| 久久久亚洲高清| 欧美国产专区| 狠狠色噜噜狠狠色综合久| 男女激情久久| 亚洲国产精品女人久久久| 经典三级久久| 奶水喷射视频一区| 91久久综合| 亚洲精品视频啊美女在线直播| 免费黄网站欧美| 亚洲国产精品成人va在线观看| 国产精品99久久久久久久vr| 国产精品白丝av嫩草影院| 亚洲女同精品视频| 欧美—级在线免费片| 日韩视频免费观看| 午夜在线成人av| 国产午夜精品一区二区三区视频 | 午夜精品视频在线观看一区二区| 欧美体内she精视频在线观看| 一区二区三区视频在线| 欧美一区二区三区另类| 91久久精品一区二区别| 欧美亚洲第一区| 欧美在线免费视屏| 99国内精品久久久久久久软件| 欧美一区=区| 亚洲第一区中文99精品| 国产色综合网| 欧美成年人网| 亚洲素人在线| 亚洲乱码国产乱码精品精可以看 | 欧美国产精品专区| 欧美影院精品一区| 欧美激情视频在线播放| 在线亚洲欧美专区二区| 极品尤物久久久av免费看| 欧美 日韩 国产 一区| 久久成人免费日本黄色| 亚洲精品视频一区| 久久久久久香蕉网| 欧美在线观看日本一区| 日韩午夜电影av| 激情综合色丁香一区二区| 国产精品丝袜xxxxxxx| 欧美激情一区在线观看| 欧美一区日韩一区| 午夜宅男久久久| 亚洲毛片在线免费观看| 美女主播精品视频一二三四| 久久精品视频网| 亚洲免费婷婷| 日韩视频精品| 亚洲最新在线视频| 亚洲高清不卡| 一区二区在线视频| 亚洲高清不卡一区| 国内外成人免费激情在线视频| 欧美视频不卡| 国产精品第三页| 欧美性片在线观看| 欧美国产综合一区二区| 欧美激情无毛| 欧美顶级大胆免费视频| 久久精品国产第一区二区三区| 欧美在线亚洲在线| 亚洲欧美影院| 亚洲一区欧美| 久久不射中文字幕| 欧美一级电影久久| 一区二区三区色| 亚洲欧美精品在线观看| 亚洲一区二区在| 欧美在线亚洲在线| 久久av在线| 久久精品人人爽| 欧美aaa级| 欧美日韩亚洲成人| 欧美精品一区二区三区在线播放| 欧美日韩一二区| 国产精品久久久久久久久动漫| 国产精品v欧美精品v日韩 | 亚洲电影免费在线观看| 久久午夜羞羞影院免费观看| 久久久久欧美精品| 久久综合九色| 欧美激情小视频| 亚洲欧洲免费视频| 亚洲第一视频网站| 亚洲精品视频免费在线观看| 一本大道久久a久久精二百| 午夜精品一区二区三区电影天堂| 亚洲欧美一区二区视频| 亚洲免费视频网站| 免费欧美日韩国产三级电影| 欧美va亚洲va香蕉在线| 99re66热这里只有精品4| 国产日韩欧美中文| 亚洲美女精品成人在线视频| 欧美中文在线观看国产| 亚洲片在线观看| 欧美一区二区三区在线观看视频| 欧美福利精品| 国模私拍视频一区| 亚洲欧美日韩一区二区三区在线| 奶水喷射视频一区|