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

martin

thinking

常用鏈接

統計

software

最新評論

C++中的智能指針

1.淺論C++中的智能指針(Smart Pointer)
簡單地講,智能指針是用一個對象來對指針進行建模,使之具有指針的特性,跟指針具有相同含義的->,*操作.并且通過對象的構造函數(獲取資源),析構資源(釋放資源)來對資源進行管理,從而減少程序員對通過new操作獲取到的對象的生命周期進行管理的負擔.
根據《Moden C++ Design》, 我們可以構造具有很多正交特性的智能指針。
1.1  C++中的智能指針與JAVA中的對象
前段時間跟朋友聊了些有關JAVA的東西,感覺上Java中的對象就是C++中的智能指針,但具有不同的資源釋放方式。在JAVA中,不能象C++中運用" A a;"語句聲明得到一個類(A)的事例a,而必須通過下列語句來獲得:Aa = new A.要在釋放a時,應用必需通知
GC(垃圾收集功能)來釋放該實例所占用的資源。當然,JAVA中的對象有一小點同C++中的職能智能不同,因為在C++中指針不具有"."操作符,故智能指針一般也不提供"."操作符,但在Java中都是通過"."操作符對對象進行操作的,不過我們可以把C++中職能指針的"->"操作符與
Java中的"."操作符進行類比。
1.2  引用計數型智能指針
在C++中有一種常用的智能指針是引用計數型智能指針:RCSmartPtr. 它的實現基理如下:
首先,存在RCObject,即存在一個對象,該對象提供引用計數接口。
另外,要存在指向RCObject的RCSmartPtr對象,在RCSmartPtr對象的構造過程中,把指向RCObject的指針作為參數傳入RCSmartPtr中。因此每增加一個RCSmartPtr對象,就多了一個指向RCObject的指針。RCSmartPtr可以通過調用RCObject的引用計數接口,增加RCObject
的引用計數。同樣的道理可以在RCSmartPtr對象的析構函數中調用RCObject的引用記數接口來減少RCObject的引用記數。
第三,在對RCObject的引用計數進行操作時對引用計數進行檢查,如果引用計數為0,則RCObject將摧毀本身,從而釋放該對象所占用的資源。
通過這種方式,我們就可以把對資源的管理交給機器來管理,解除了對人工的倚賴。
 

posted on 2009-03-03 15:00 martin_yahoo 閱讀(4205) 評論(5)  編輯 收藏 引用

評論

# re: C++中的智能指針 2009-03-03 16:08 abettor

說實話,如果沒有真正用過智能指針的人來讀博主的文章,可能會摸不到頭。要是給出點具體的例子(如代碼)就好了。  回復  更多評論   

# re: C++中的智能指針 2009-03-03 18:37 路人乙

"感覺上Java中的對象就是C++中的智能指針",你這個感覺差得太遠了,完全不是一個東西,不是一個機制,完全沒有可比性,居然被安上“就是”。后面還言之鑿鑿的比較起兩個各有什么操作符來,完全是在誤人子弟!  回復  更多評論   

# re: C++中的智能指針 2009-03-03 18:47 陳梓瀚(vczh)

智能指針使用引用計數,如果一不小心循環了(譬如將雙向鏈表中的兩個指針都用智能指針代替),就完蛋了。  回復  更多評論   

# re: C++中的智能指針[未登錄] 2009-03-09 15:14 martin_yahoo

@陳梓瀚(vczh)
class T; //雙向鏈表的節點類
class T_var;  //為指向對象T的智能指針類.
class T_list; //雙向鏈表數據結構類
假設class T為雙向鏈表上的節點,故它的定義可以簡單地用如下方式表示:

calss T{
....
private:
T_var beforePtr;
T_var nextPtr;
};

現在考慮三個節點:N ,N1,N2節點.
N節點的nextPtr指向N1, beforePtr指向其它節點
(如果N節點前面沒有其它節點,此時只有N1節點引用它,則它的引用計數為1;如果前面還有還有其它節點,則它的引用計數為2).

N1節點的nextPtr指向N2, beforePtr指向N節點.
(N1節點的引用計數為2).

N2節點的nextPtr指向其它節點, beforePtr指向N1節點.
(如果N節點后面沒有其它節點,此時只有N1節點引用它,則它的引用計數為1;如果后面還有還有其它節點,則它的引用計數為2).

現在假設要刪除N1節點, 把N2節點中的beforePtr指向N,
則N節點的引用計數增加一,N1節點的引用計數減少1,變成1.
把N節點的nextPtr指向N2節點,則N2的引用計數增加一,N1節點的引用計數減少1,從而N1節點的引用計數被降到0,N1節點將被自動摧毀.

此時,N,N2節點的引用計數將各自減一.維持與N節點存在是一致.這種情況下沒完蛋.

考慮到在類T_list中包含有雙向鏈表的首,尾地址.因此在一般情況下,各節點的引用計數都為2.

因此,對于首,尾節點的操作與N1節點一致.
  回復  更多評論   

# re: C++中的智能指針[未登錄] 2009-03-09 16:19 martin_yahoo

@abettor
你可以參閱:
智能指針的代碼實例   回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            裸体一区二区三区| 在线综合+亚洲+欧美中文字幕| 欧美伊久线香蕉线新在线| 亚洲在线播放电影| 欧美呦呦网站| 久久一二三区| 欧美日韩精品一本二本三本| 欧美xxxx在线观看| 亚洲成人在线网站| 91久久精品www人人做人人爽| 亚洲国产精品欧美一二99| 日韩视频不卡中文| 新狼窝色av性久久久久久| 久久精品国产精品亚洲| 久久免费99精品久久久久久| 久久性色av| 欧美午夜电影完整版| 国产亚洲欧美aaaa| 91久久精品美女高潮| 99www免费人成精品| 亚洲午夜一区二区| 久久亚洲图片| 日韩视频免费在线观看| 午夜在线观看免费一区| 欧美激情国产日韩| 国产亚洲一区二区精品| 一本久道久久久| 欧美福利电影在线观看| 亚洲看片免费| 欧美吻胸吃奶大尺度电影| 免费成人美女女| 一本色道久久综合亚洲精品小说| 欧美一区二区视频网站| 欧美黄色大片网站| 国产三级精品在线不卡| 久久影视三级福利片| 国产精品美女| 日韩亚洲精品电影| 老司机免费视频久久| 日韩午夜精品| 一区二区三区高清在线| 欧美国产一区二区| 国内外成人免费激情在线视频网站| 日韩视频一区二区三区| 久久免费视频在线观看| 亚洲图片在线观看| 国产伦精品一区二区三区四区免费| 亚洲国产精品t66y| 久久综合99re88久久爱| 午夜精品久久久久| 国产精品久久夜| 亚洲午夜激情免费视频| 亚洲精品一区二区三区在线观看 | 午夜精品久久久久久久白皮肤 | 99国产一区| 欧美黄色小视频| 久久天天狠狠| 在线观看亚洲视频| 久久理论片午夜琪琪电影网| 亚洲一区一卡| 欧美国产大片| 欧美成年人视频网站欧美| 亚洲第一精品福利| 女人香蕉久久**毛片精品| 久久影视三级福利片| 亚洲国产日韩欧美综合久久| 美女日韩欧美| 蜜桃久久av一区| 亚洲精品一区二区三区福利| 亚洲激情欧美| 91久久久亚洲精品| 欧美1区视频| 欧美jizzhd精品欧美巨大免费| 亚洲二区免费| 99pao成人国产永久免费视频| 欧美午夜精品久久久久久孕妇 | 亚洲性感激情| 日韩一级精品视频在线观看| 欧美日本久久| 午夜精品在线看| 欧美一区2区三区4区公司二百| 国际精品欧美精品 | 性久久久久久久久| 一色屋精品视频免费看| 欧美激情偷拍| 欧美午夜在线一二页| 欧美一区二区视频在线观看2020| 欧美一区在线直播| 久久久精品免费视频| 亚洲国产视频一区二区| 日韩视频在线观看免费| 国产乱码精品一区二区三区不卡| 裸体丰满少妇做受久久99精品| 亚洲日本中文字幕区| 国产一区二区电影在线观看| 免费日韩成人| 国产精品久久福利| 老司机成人网| 欧美色欧美亚洲高清在线视频| 欧美自拍偷拍| 欧美日韩伦理在线| 久久久久综合一区二区三区| 欧美极品在线视频| 久久国产综合精品| 欧美日韩国产页| 免费不卡在线视频| 国产精品自拍在线| 亚洲国产精品一区二区第四页av| 国产精品一区久久| 99re热这里只有精品免费视频| 国产综合色精品一区二区三区| 亚洲精品免费一二三区| 精品999网站| 午夜在线一区| 午夜久久电影网| 欧美精品国产| 欧美国产欧美亚州国产日韩mv天天看完整 | 在线观看欧美日韩国产| 亚洲欧美一区二区三区在线| 一区二区久久| 欧美国产乱视频| 国产欧美在线观看| 中文无字幕一区二区三区| 亚洲欧洲在线观看| 久久综合亚洲社区| 免播放器亚洲| 尤妮丝一区二区裸体视频| 欧美一区二区在线视频| 亚洲欧美日韩一区二区三区在线观看 | 最近中文字幕mv在线一区二区三区四区 | 国产亚洲欧美中文| 99精品国产热久久91蜜凸| 亚洲人成77777在线观看网| 久久精品国产久精国产一老狼| 午夜精品一区二区在线观看 | 国产精品影音先锋| 一区二区三区久久| 亚洲视频国产视频| 欧美色另类天堂2015| 一本一道久久综合狠狠老精东影业 | 国产精品视频第一区| 夜夜嗨av一区二区三区| 亚洲一区二区网站| 国产精品高清一区二区三区| 亚洲一区二区伦理| 国产精品久久久久久久一区探花| 一区二区三区产品免费精品久久75| 制服丝袜亚洲播放| 国产精品日韩一区二区| 欧美在线视频网站| 免费亚洲电影| 亚洲美女区一区| 国产精品久久久久一区| 销魂美女一区二区三区视频在线| 久久精品官网| 亚洲黄色影片| 欧美性大战久久久久| 久久综合九色综合久99| 免费不卡视频| 中文高清一区| 国产视频欧美视频| 欧美视频观看一区| 欧美激情一区二区三区成人| 一区二区高清在线观看| 国产毛片一区| 免费在线欧美视频| 亚洲一区黄色| 欧美大香线蕉线伊人久久国产精品| 日韩天堂av| 国产欧美日韩视频一区二区| 久久亚洲综合色| 在线视频亚洲欧美| 欧美成人r级一区二区三区| 亚洲影音先锋| 亚洲精品乱码久久久久久按摩观 | 国产精品自在欧美一区| 久久一二三国产| 亚洲综合国产激情另类一区| 在线欧美三区| 国产精品一级二级三级| 蜜桃av一区| 欧美一区二区三区四区高清| 亚洲激情成人在线| 久久久噜噜噜| 亚洲在线视频免费观看| 亚洲国产日韩综合一区| 国产欧美 在线欧美| 欧美片第1页综合| 久久精品伊人| 午夜精品久久久久久久白皮肤| 亚洲人成毛片在线播放| 亚洲免费观看高清完整版在线观看熊| 狠狠色丁香婷综合久久| 国产精品av一区二区| 美女黄毛**国产精品啪啪| 亚洲女人av| 亚洲视频香蕉人妖| 亚洲欧洲日韩综合二区| 免费日韩精品中文字幕视频在线| 欧美专区福利在线|