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

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 閱讀(4199) 評論(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
你可以參閱:
智能指針的代碼實例   回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美一区免费视频| 欧美日韩精品一区| 亚洲国产视频a| 久久不射网站| 久久精品首页| 欧美jizzhd精品欧美巨大免费| 久久综合狠狠综合久久激情| 免费高清在线视频一区·| 欧美成人精精品一区二区频| 最近中文字幕日韩精品| 中文在线不卡| 久久av一区| 老司机精品视频网站| 欧美精品激情| 国产精品一区二区a| 一区二区三区在线观看欧美| 亚洲精品久久久蜜桃 | 亚洲视频在线一区| 亚洲欧美一区二区激情| 久久艳片www.17c.com| 欧美精品二区| 国内成人精品2018免费看| 日韩亚洲欧美一区二区三区| 欧美亚洲免费在线| 亚洲国产91精品在线观看| 在线午夜精品| 狼狼综合久久久久综合网 | 一区二区三区免费网站| 欧美一区二区日韩| 免费一区二区三区| 在线视频中文亚洲| 欧美韩日亚洲| 狠狠色狠色综合曰曰| 亚洲午夜小视频| 免费在线一区二区| 亚洲一区在线直播| 欧美另类久久久品| 亚洲国产精品久久久久秋霞不卡| 午夜天堂精品久久久久| 亚洲日韩中文字幕在线播放| 久久福利精品| 国产欧美一级| 亚洲一区二区三区在线看| 欧美成人中文| 久久久91精品国产一区二区三区 | 亚洲欧美在线x视频| 欧美国产精品一区| 欧美主播一区二区三区美女 久久精品人 | 羞羞视频在线观看欧美| 欧美日韩伊人| 国产精品区一区| 亚洲欧洲日本一区二区三区| 欧美一区免费视频| 亚洲午夜视频在线观看| 欧美精品二区| 亚洲精品久久久久中文字幕欢迎你 | 亚洲人成网站色ww在线| 久久亚洲视频| 亚洲国产成人91精品| 欧美在线观看一区二区三区| 国产毛片久久| 久久高清一区| 欧美成人精品影院| 国产麻豆视频精品| 久久av在线| 午夜久久美女| 国产在线精品一区二区夜色| 久久久精品五月天| 久久国产一区二区三区| 黄色一区三区| 欧美va日韩va| 91久久综合亚洲鲁鲁五月天| 亚洲三级视频在线观看| 一区二区三区日韩在线观看| 欧美视频不卡中文| 亚洲女优在线| 欧美在线视频免费播放| 在线观看国产一区二区| 欧美高清自拍一区| 欧美精品尤物在线| 亚洲综合社区| 久久久国产亚洲精品| 亚洲国产高清在线| 亚洲日本免费| 国产精品青草综合久久久久99 | 在线综合亚洲欧美在线视频| 欧美成va人片在线观看| 亚洲日本成人在线观看| 亚洲片区在线| 欧美午夜欧美| 久久精品国产亚洲一区二区| 久久精品卡一| 日韩视频免费观看高清完整版| 亚洲免费观看高清完整版在线观看熊 | 国产美女扒开尿口久久久| 国产亚洲精品综合一区91| 欧美在线观看一区二区| 久久女同互慰一区二区三区| 一区二区久久| 欧美一区二区在线免费观看| 最近看过的日韩成人| 亚洲无毛电影| 在线欧美三区| 一本色道久久加勒比88综合| 国产丝袜美腿一区二区三区| 欧美激情一区二区三区在线视频观看 | 日韩午夜免费| 久久九九电影| 欧美成人一二三| 欧美在线视频播放| 亚洲黄一区二区三区| 国产精品青草久久久久福利99| 亚洲福利视频专区| 国产综合色精品一区二区三区| 亚洲精品免费一二三区| 黑人巨大精品欧美黑白配亚洲| 99成人精品| 亚洲日本理论电影| 久久国产精品亚洲va麻豆| 午夜精品久久久久久久久| 欧美高清成人| 美日韩精品视频免费看| 国产日韩欧美一区二区三区在线观看| 91久久线看在观草草青青| 在线观看精品视频| 久久精品天堂| 久久亚洲免费| 国产性做久久久久久| 亚洲图片欧洲图片av| 在线一区欧美| 欧美日精品一区视频| 亚洲日韩欧美视频| 99国内精品久久| 欧美精品一线| 99国产精品国产精品毛片| 夜夜嗨av一区二区三区| 欧美精品自拍偷拍动漫精品| 亚洲全部视频| 在线亚洲伦理| 国产精品久久一卡二卡| 中日韩午夜理伦电影免费| 亚洲欧美春色| 国产精品美女久久久久久2018| 在线一区亚洲| 欧美一区观看| 国产一区香蕉久久| 久久免费99精品久久久久久| 免费试看一区| 夜夜嗨网站十八久久| 欧美三日本三级少妇三99| 亚洲婷婷综合色高清在线| 欧美在线播放一区| 激情综合色综合久久| 麻豆精品国产91久久久久久| 亚洲靠逼com| 午夜精品免费在线| 狠狠色综合播放一区二区| 久久夜色精品| 亚洲乱码视频| 久久成人这里只有精品| 亚洲第一精品影视| 欧美日本国产一区| 亚洲欧美乱综合| 免费观看不卡av| 亚洲午夜日本在线观看| 国产一区二区三区视频在线观看| 蜜桃av一区二区三区| 一区二区精品在线观看| 快播亚洲色图| 亚洲视频精品| 在线成人av.com| 欧美日韩精品一区| 久久九九99| 日韩视频在线观看| 久久嫩草精品久久久久| 亚洲精品影院在线观看| 国产精品午夜在线| 免费成人性网站| 亚洲男人的天堂在线aⅴ视频| 欧美激情精品久久久久久免费印度| 亚洲一区二区av电影| 亚洲高清精品中出| 国产精品自在在线| 一区二区三区不卡视频在线观看| 欧美一级午夜免费电影| 亚洲欧洲精品一区二区三区 | 久久黄金**| 99精品国产在热久久| 国产亚洲制服色| 欧美日韩午夜视频在线观看| 久久精品首页| 午夜视黄欧洲亚洲| 日韩一区二区免费高清| 免费影视亚洲| 久久久久久尹人网香蕉| 亚洲综合色丁香婷婷六月图片| 亚洲区欧美区| 在线精品视频一区二区| 国产区在线观看成人精品| 国产精品v亚洲精品v日韩精品|