锘??xml version="1.0" encoding="utf-8" standalone="yes"?>伊人久久综合无码成人网,丰满少妇人妻久久久久久,亚洲欧美伊人久久综合一区二区http://www.shnenglu.com/aaxron/archive/2013/03/04/198217.html澶╀笅澶╀笅Mon, 04 Mar 2013 10:00:00 GMThttp://www.shnenglu.com/aaxron/archive/2013/03/04/198217.htmlhttp://www.shnenglu.com/aaxron/comments/198217.htmlhttp://www.shnenglu.com/aaxron/archive/2013/03/04/198217.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/198217.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/198217.htmlC璇█瀹炵幇鏈夐檺鐘舵佹満

鏈夐檺鐘舵佹満(finite state machine)鏄竴涓暟瀛︽蹇碉紝濡傛灉鎶婂畠榪愮敤浜庣▼搴忎腑錛屽彲浠ュ彂鎸ュ緢澶х殑浣滅敤銆傚畠鏄竴縐嶅崗璁紝鐢ㄤ簬鏈夐檺鏁伴噺鐨勫瓙紼嬪簭(”鐘舵?#8221;)鐨勫彂灞曞彉鍖栥傛瘡涓瓙紼嬪簭榪涜涓浜涘鐞嗗茍閫夋嫨涓嬩竴縐嶇姸鎬?閫氬父鍙栧喅浜庝笅涓孌佃緭鍏?銆?br />
鏈夐檺鐘舵佹満(FSM)鍙互鐢ㄤ綔紼嬪簭鐨勬帶鍒剁粨鏋勩侳SM瀵逛簬閭d簺鍩轟簬杈撳叆鐨勫湪鍑犱釜涓嶅悓鐨勫彲閫夊姩浣滀腑榪涜寰幆鐨勭▼搴忓挨鍏跺悎閫傘傛姇甯佸敭璐ф満灝辨槸FSM鐨勪竴涓ソ渚嬪瓙銆傚彟澶栦竴涓綘鍙互鎯沖埌鐨勫鏉傜殑渚嬪瓙灝辨槸浣犳鍦ㄧ敤鐨勪笢瑗匡紝鎯沖埌浜嗗悧錛熸病閿欙紝灝辨槸鎿嶄綔緋葷粺銆傚湪鎶曞竵鍞揣鏈虹殑渚嬪瓙涓紝杈撳叆鏄‖甯侊紝杈撳嚭鏄緟鍞晢鍝侊紝鍞揣鏈烘湁” 鎺ュ彈紜竵”錛?#8221;閫夋嫨鍟嗗搧”錛?#8221;鍙戦佸晢鍝?#8221;鍜?#8221;鎵鵑浂閽?#8221;絳夊嚑縐嶇姸鎬併?br />
瀹冪殑鍩烘湰鎬濊礬鏄敤涓寮犺〃淇濆瓨鎵鏈夊彲鑳界殑鐘舵侊紝騫跺垪鍑鴻繘鍏ユ瘡涓姸鎬佹椂鍙兘鎵ц鐨勬墍鏈夊姩浣滐紝鍏朵腑鏈鍚庝竴涓姩浣滃氨鏄綆?閫氬父鍦ㄥ綋鍓嶇姸鎬佸拰涓嬩竴嬈¤緭鍏ュ瓧絎︾殑鍩虹涓婏紝鍙﹀鍐嶇粡榪囦竴嬈¤〃鏌ヨ)涓嬩竴涓簲璇ヨ繘鍏ョ殑鐘舵併備綘浠庝竴涓?#8221;鍒濆鐘舵?#8221; 寮濮嬨傚湪榪欎竴榪囩▼涓紝緲昏瘧琛ㄥ彲鑳藉憡璇変綘榪涘叆浜嗕竴涓敊璇姸鎬侊紝鐩村埌鍒拌揪緇撴潫鐘舵併?br />
鍦–璇█涓紝鏈夊ソ鍑犵鏂規硶鍙互鐢ㄦ潵琛ㄨ揪FSM錛屼絾瀹冧滑緇濆ぇ澶氭暟閮芥槸鍩轟簬鍑芥暟鎸囬拡鏁扮粍銆備竴涓嚱鏁版寚閽堟暟緇勫彲浠ュ儚涓嬮潰榪欐牱澹版槑錛?br />
void (*state[MAX_STATES]) ();

濡傛灉鐭ラ亾浜嗗嚱鏁板悕錛屽氨鍙互鍍忎笅闈㈣繖鏍峰鏁扮粍榪涜鍒濆鍖栥?br />
extern int a(),b(),c(),d();
int (*state[]) ()={a,b,c,c};

鍙互閫氳繃鏁扮粍涓殑鎸囬拡鏉ヨ皟鐢ㄥ嚱鏁幫細
(
*state[i]) ();

鎵鏈夊嚱鏁板繀欏繪帴鍙楀悓鏍風殑鍙傛暟錛屽茍榪斿洖鍚岀綾誨瀷鐨勮繑鍥炲?闄ら潪浣犳妸鏁扮粍鍏冪礌鍋氭垚涓涓仈鍚?銆傚嚱鏁版寚閽堟槸寰堟湁瓚g殑銆傛敞鎰忥紝鎴戜滑鍙互鍘繪帀鎸囬拡褰㈠紡錛屾妸涓婇潰鐨勮皟鐢ㄥ啓鎴愶細

state[i] ();

鐢氳嚦
(
***state[i]) ();

榪欐槸涓涓湪ANSI C涓祦琛岀殑涓嶈壇鏂規硶錛氳皟鐢ㄥ嚱鏁板拰閫氳繃鎸囬拡璋冪敤鍑芥暟(鎴栦換鎰忓眰嬈$殑鎸囬拡闂存帴寮曠敤)鍙互浣跨敤鍚屼竴縐嶈娉曘?br />
濡傛灉浣犳兂騫插緱婕備寒涓鐐癸紝鍙互璁╃姸鎬佸嚱鏁拌繑鍥炰竴涓寚鍚戦氱敤鍚庣畫鍑芥暟鐨勬寚閽堬紝騫舵妸瀹冭漿鎹負閫傚綋鐨勭被鍨嬨傝繖鏍鳳紝灝變笉闇瑕佸叏灞鍙橀噺浜嗐傚鏋滀綘涓嶆兂鎼炲緱澶姳鍝紝鍙互浣跨敤涓涓猻witch璇彞浣滀負涓縐嶇畝鏈寸殑鐘舵佹満錛屾柟娉曟槸璧嬪肩粰鎺у埗鍙橀噺騫舵妸switch璇彞鏀懼湪寰幆鍐呴儴銆傚叧浜嶧SM榪樻湁鏈鍚庝竴鐐歸渶瑕佽鏄庯細濡傛灉浣犵殑鐘舵佸嚱鏁扮湅涓婂幓闇瑕佸涓笉鍚岀殑鍙傛暟錛屽彲浠ヨ冭檻浣跨敤涓涓弬鏁拌鏁板櫒鍜屼竴涓瓧絎︿覆鎸囬拡鏁扮粍錛屽氨鍍弇ain鍑芥暟鐨勫弬鏁頒竴鏍楓傛垜浠啛鎮夌殑int argc,
char *argv[]鏈哄埗鏄潪甯告櫘閬嶇殑錛屽彲浠ユ垚鍔熷湴搴旂敤鍦ㄤ綘鎵瀹氫箟鐨勫嚱鏁頒腑

澶╀笅 2013-03-04 18:00 鍙戣〃璇勮
]]>
C++ pimpl 鎶娉?/title><link>http://www.shnenglu.com/aaxron/archive/2011/11/05/159685.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Sat, 05 Nov 2011 09:40:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2011/11/05/159685.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/159685.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2011/11/05/159685.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/159685.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/159685.html</trackback:ping><description><![CDATA[<font class="Apple-style-span" face="Helvetica, Tahoma, Arial, sans-serif"><span id="53zfb5t" class="Apple-style-span" style="line-height: 25px; "> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008000; ">// <div style="display: inline-block; "> <div><a href="file:///C:/Program%20Files/Youdao/DeskDict2/resultui/queryresult.html"><strong style="color: red; ">pimpl idiom</strong></a><font class="dot"><span style="color: red; ">..</span></font><span id="5ldjxx5" class="brief">鎸囧悜瀹炵幇鐨勬寚閽?/span></div> </div> <br /> //</span><span style="color: #008000; ">pimpl 榪欑鍋氭硶榪樹繚闅滀簡浜岃繘鍒跺吋瀹規э紝璁╁姩鎬佸簱鐨勫崌綰у彉寰楁洿瀹規槗銆?br /> //闅愯棌浜嗗疄鐜扮殑緇嗚妭.<br /> </span><span style="color: #008000; ">//</span><span style="color: #008000; ">C++浠g爜  <br /> </span><span style="color: #008000; ">//</span><span style="color: #008000; "> A.h  </span><span style="color: #008000; "><br /> </span><span style="color: #000000; "><br /> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> AImpl;  <br /> <br /> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> A {  <br /> </span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:  <br />     A();  <br />     </span><span style="color: #000000; ">~</span><span style="color: #000000; ">A();  <br />     </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> func();  <br /> <br /> </span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">:  <br />     A(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> A</span><span style="color: #000000; ">&</span><span style="color: #000000; ">);  <br />     </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">operator</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> A</span><span style="color: #000000; ">&</span><span style="color: #000000; ">);  <br />     AImpl</span><span style="color: #000000; ">*</span><span style="color: #000000; "> impl_;  <br /> }錛?nbsp; <br /> <br /> </span><span style="color: #008000; ">//</span><span style="color: #008000; "> A.cpp </span><span style="color: #008000; "><br /> </span><span style="color: #000000; "><br /> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> AImpl {  <br /> </span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:  <br />     </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> func();  <br /> </span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">:  <br />     </span><span style="color: #0000ff; ">int </span><span style="color: red; "> </span><span style="color: #000000; ">myFunc(int myParam);  <br /> </span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">:  <br />     int  _myVariable;  <br /> };  <br /> <br /> A::A()  <br /> : impl_(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> AImpl)  <br /> {  <br /> }  <br /> <br /> A::</span><span style="color: #000000; ">~</span><span style="color: #000000; ">A()  <br /> {  <br />     delete impl_;  <br /> }  <br /> <br /> </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> A::func()  <br /> {  <br />     impl_</span><span style="color: #000000; ">-></span><span style="color: #000000; ">func();  <br /> }  <br /> </span></div> </span></font> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><font class="Apple-style-span" color="#008000"><br /> </font></div> <br /> <br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; "> A.h  <br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">pimplidiom 鎸囧悜瀹炵幇鐨勬寚閽?br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">pimpl 榪欑鍋氭硶榪樹繚闅滀簡浜岃繘鍒跺吋瀹規э紝璁╁姩鎬佸簱鐨勫崌綰у彉寰楁洿瀹規槗銆?br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">闅愯棌浜嗗疄鐜扮殑緇嗚妭.</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">#pragma once<br /><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> A {  <br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:  <br />    A();  <br />    </span><span style="color: #000000; ">~</span><span style="color: #000000; ">A();  <br />    </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> func();  <br /><br /></span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">:  <br />    A(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> A</span><span style="color: #000000; ">&</span><span style="color: #000000; ">);  <br />    </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">operator</span><span style="color: #000000; ">=</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> A</span><span style="color: #000000; ">&</span><span style="color: #000000; ">);  <br />    </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> AImpl;  </span><span style="color: #008000; ">//</span><span style="color: #008000; "> 澹版槑錛屼笉鏄畾涔?nbsp; </span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    AImpl</span><span style="color: #000000; ">*</span><span style="color: #000000; "> impl_;<br />}; <br /><br /></span><span style="color: #008000; ">//</span><span style="color: #008000; "> A.cpp  <br /></span><span style="color: #008000; ">//</span><span style="color: #008000; "> 鍦ㄨ繖閲屽畾涔夛紝瀹屽叏涓嶆毚闇?nbsp; </span><span style="color: #008000; "><br /></span><span style="color: #000000; ">#include </span><span style="color: #000000; ">"</span><span style="color: #000000; ">a.h</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> A::AImpl {  <br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:  <br />    </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> func(){<br />        <br />    }<br /></span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">:  <br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> myFunc(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> myParam);  <br /></span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">:  <br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> _myVariable;  <br />};  <br /><br />A::A()  <br />: impl_(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> AImpl)  <br />{  <br />}  <br /><br />A::</span><span style="color: #000000; ">~</span><span style="color: #000000; ">A()  <br />{  <br />    delete impl_;  <br />}  <br /><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> A::func()  <br />{  <br />    impl_</span><span style="color: #000000; ">-></span><span style="color: #000000; ">func();  <br />}  <br /></span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/159685.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2011-11-05 17:40 <a href="http://www.shnenglu.com/aaxron/archive/2011/11/05/159685.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C++ RAIIhttp://www.shnenglu.com/aaxron/archive/2011/03/22/142475.html澶╀笅澶╀笅Tue, 22 Mar 2011 06:25:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/03/22/142475.htmlhttp://www.shnenglu.com/aaxron/comments/142475.htmlhttp://www.shnenglu.com/aaxron/archive/2011/03/22/142475.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/142475.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/142475.html 

C++ RAII

    RAII鏄痳esource acquisition 
is initialization鐨勭緝鍐欙紝鎰忎負“璧勬簮鑾峰彇鍗沖垵濮嬪寲”銆傚畠鏄疌++涔嬬埗Bjarne Stroustrup鎻愬嚭鐨勮璁$悊蹇碉紝鍏舵牳蹇冩槸鎶婅祫婧愬拰瀵硅薄鐨勭敓鍛藉懆鏈熺粦瀹氾紝瀵硅薄鍒涘緩鑾峰彇璧勬簮錛屽璞¢攢姣侀噴鏀捐祫婧愩傚湪RAII鐨勬寚瀵間笅錛孋++鎶婂簳灞傜殑璧勬簮綆$悊闂鎻愬崌鍒頒簡瀵硅薄鐢熷懡鍛ㄦ湡綆$悊鐨勬洿楂樺眰嬈°?br>    璇磋搗鏉ワ紝RAII鐨勫惈涔夊掍篃涓嶇畻澶嶆潅銆傜敤鐧借瘽璇村氨鏄細鍦ㄧ被鐨勬瀯閫犲嚱鏁頒腑鍒嗛厤璧勬簮錛屽湪鏋愭瀯鍑芥暟涓噴鏀捐祫婧愩傝繖鏍鳳紝褰撲竴涓璞″垱寤虹殑鏃跺欙紝鏋勯犲嚱鏁頒細鑷姩鍦拌璋冪敤錛涜屽綋榪欎釜瀵硅薄琚噴鏀劇殑鏃跺欙紝鏋愭瀯鍑芥暟涔熶細琚嚜鍔ㄨ皟鐢ㄣ備簬鏄箮錛屼竴涓璞$殑鐢熷懡鏈熺粨鏉熷悗灝嗕細涓嶅啀鍗犵敤璧勬簮錛岃祫婧愮殑浣跨敤鏄畨鍏ㄥ彲闈犵殑銆?br>C++ RAII浣撶幇鍑轟簡綆媧併佸畨鍏ㄣ佸疄鏃剁殑鐗圭偣錛?br>
1.姒傚康綆媧佹э細璁╄祫婧愶紙鍖呮嫭鍐呭瓨鍜岄潪鍐呭瓨璧勬簮錛夊拰瀵硅薄鐨勭敓鍛藉懆鏈熺粦瀹氾紝璧勬簮綾葷殑璁捐鑰呭彧闇鐢ㄥ湪綾誨畾涔夊唴閮ㄥ鐞嗚祫婧愰棶棰橈紝鎻愰珮浜嗙▼搴忕殑鍙淮鎶ゆ?br>2.綾誨瀷瀹夊叏鎬э細閫氳繃璧勬簮浠g悊瀵硅薄鍖呰璧勬簮錛堟寚閽堝彉閲忥級錛屽茍鍒╃敤榪愮畻絎﹂噸杞芥彁渚涙寚閽堣繍綆楁柟渚夸嬌鐢紝浣嗗澶栨毚闇茬被鍨嬪畨鍏ㄧ殑鎺ュ彛
3.寮傚父瀹夊叏鎬э細鏍堣涔変繚璇佸璞℃瀽鏋勫嚱鏁扮殑璋冪敤錛屾彁楂樹簡紼嬪簭鐨勫仴澹?br>4.閲婃斁瀹炴椂鎬э細鍜孏C鐩告瘮錛孯AII杈懼埌浜嗗拰鎵嬪姩閲婃斁璧勬簮涓鏍風殑瀹炴椂鎬э紝鍥犳鍙互鎵挎媴搴曞眰寮鍙戠殑閲嶄換

涔熻浣犺繕鍦ㄦ儕璁禦AII濡傛綆鍗曠殑鏃跺欙紝鍏充簬RAII鐨勪富瑕佸唴瀹瑰凡緇忎粙緇嶅畬浜嗐傜畝鍗曚笉鎰忓懗鐫綆闄嬶紝鍦ㄦ垜鐪嬫潵RAII铏界劧涓嶅儚GC涓鏍鳳紝鏄竴濂楀叿浣撶殑鏈哄埗錛屼絾瀹冭暣鍚殑瀵硅薄涓庤祫婧愬叧緋葷殑鍝插娣卞害鐨勭悊瑙e嵈浣垮緱鎴戝Bjarne Stroustrup鑲冪劧璧鋒暚錛?br>
鏈鍚庯紝涓嶅緱涓嶆彁閱扲AII鐨勭悊蹇靛浐鐒剁畝鍗曪紝涓嶈繃鍦ㄥ叿浣撳疄鐜扮殑鏃跺欎粛鏈夐渶瑕佸皬蹇冪殑鍦版柟銆傛瘮濡傚浜嶴TL鐨刟uto_ptr錛屽彲浠ヨ涓鴻祫婧愮殑浠g悊瀵硅薄錛宎uto_ptr瀵硅薄闂寸殑璧嬪兼槸涓涓渶瑕佺壒鍒敞鎰忕殑鍦版柟銆傜畝鍗曡鏉ヨ祫婧愪唬鐞嗗璞¢棿璧嬪肩殑璇箟涓嶆弧瓚?#8220;璧嬪肩浉絳?#8221;錛屽叾璇箟鏄祫婧愮鐞嗘潈鐨勮漿縐匯?br>
浠涔堟槸“璧嬪肩浉絳?#8221;鍛紵姣斿錛?br>
int a;  int b = 10;  a = b; //榪欏彞璇濇墽琛屽悗 a == b 浣嗗浜庤祫婧愪唬鐞嗗璞★紝榪欐槸涓嶆弧瓚崇殑錛屾瘮濡傦細

auto_ptr
<int> a(null);  auto_ptr<int> b(new int(123));  a = b; //榪欏彞璇濇墽琛屽悗a != b錛岃祴鍊肩殑璇箟鏄痓鎶婅祫婧愮殑綆$悊鏉冧氦緇欎簡a 

auto_ptr鏄繖鏍蜂竴縐嶆寚閽堬細瀹冩槸“瀹冩墍鎸囧悜鐨勫璞?#8221;鐨勬嫢鏈夎呫傝繖縐嶆嫢鏈夊叿鏈夊敮涓鎬э紝鍗充竴涓璞″彧鑳芥湁涓涓嫢鏈夎咃紝涓ョ涓鐗╀簩涓匯傚綋auto_ptr鎸囬拡琚懅姣佹椂錛屽畠鎵鎸囧悜鐨勫璞′篃灝嗚闅愬紡閿姣侊紝鍗充嬌紼嬪簭涓湁寮傚父鍙戠敓錛宎uto_ptr鎵鎸囧悜鐨勫璞′篃灝嗚閿姣併?br>

鍏充簬auto_ptr鐨勫嚑縐嶆敞鎰忎簨欏癸細
1銆乤uto_ptr涓嶈兘鍏變韓鎵鏈夋潈銆?br>2銆乤uto_ptr涓嶈兘鎸囧悜鏁扮粍
3銆乤uto_ptr涓嶈兘浣滀負瀹瑰櫒鐨勬垚鍛樸?br>4銆佷笉鑳介氳繃璧嬪兼搷浣滄潵鍒濆鍖朼uto_ptr
std::auto_ptr
<int> p(new int(42));     //OK
std::auto_ptr<int> p = new int(42);    //ERROR
榪欐槸鍥犱負auto_ptr 鐨勬瀯閫犲嚱鏁拌瀹氫箟涓轟簡explicit
5銆佷笉瑕佹妸auto_ptr鏀懼叆瀹瑰櫒

涓嬮潰渚挎槸鍦–
++涓疄鐜癛AII鐨勫吀鍨嬩唬鐮侊細
class file
{
public:
    file(
string const& name) {
        m_fileHandle
=fopen(name.cstr());
    }
    
~file() {
        fclose(m_fileHandle);
    }
    
//
private:
    handle m_fileHandle;
}

寰堝吀鍨嬬殑“鍦ㄦ瀯閫犲嚱鏁伴噷鑾峰彇錛屽湪鏋愭瀯鍑芥暟閲岄噴鏀?#8221;銆傚鏋滄垜鍐欎笅浠g爜錛?nbsp;  
void fun1() {
    file myfile(
"my.txt");
     
//鎿嶄綔鏂囦歡
//姝ゅ閿姣佸璞★紝璋冪敤鏋愭瀯鍑芥暟錛岄噴鏀捐祫婧?/span>
褰撳嚱鏁扮粨鏉熸椂錛屽眬閮ㄥ璞yfile鐨勭敓鍛藉懆鏈熶篃緇撴潫浜嗭紝鏋愭瀯鍑芥暟渚夸細琚皟鐢紝璧勬簮浼氬緱鍒伴噴鏀俱傝屼笖錛屽鏋滃嚱鏁頒腑鐨勪唬鐮佹姏鍑哄紓甯革紝閭d箞鏋愭瀯鍑芥暟涔熶細琚皟鐢紝璧勬簮鍚屾牱浼氬緱鍒伴噴鏀俱傛墍浠ワ紝鍦≧AII涓嬶紝涓嶄粎浠呰祫婧愬畨鍏紝涔熸槸寮傚父瀹夊叏鐨勩?br>
浣嗘槸錛屽湪濡備笅鐨勪唬鐮佷腑錛岃祫婧愪笉鏄畨鍏ㄧ殑錛屽敖綆℃垜浠疄鐜頒簡RAII錛?br>
void fun2() {
    file pfile
=new file("my.txt");
     
//鎿嶄綔鏂囦歡
}
鍥犱負鎴戜滑鍦ㄥ爢涓婂垱寤轟簡涓涓璞★紙閫氳繃new錛夛紝浣嗘槸鍗存病鏈夐噴鏀懼畠銆傛垜浠繀欏昏繍鐢╠elete鎿嶄綔絎︽樉寮忓湴鍔犱互閲婃斁錛?br>
void fun3() {
    file pfile
=new file("my.txt");
     
//鎿嶄綔鏂囦歡
        delete pfile;
}
鍚﹀垯錛岄潪浣嗗璞′腑鐨勮祫婧愬緱涓嶅埌閲婃斁錛岃繛瀵硅薄鏈韓鐨勫唴瀛樹篃寰椾笉鍒板洖鏀躲傦紙灝嗘潵錛孋
++鐨勬爣鍑嗕腑灝嗕細寮曞叆GC錛堝瀮鍦炬敹闆嗭級錛屼絾姝e涓嬮潰鍒嗘瀽鐨勯偅鏍鳳紝GC渚濈劧鏃犳硶紜繚璧勬簮鐨勫畨鍏級銆?br>鐜板湪錛屽湪fun3()錛岃祫婧愭槸瀹夊叏鐨勶紝浣嗗嵈涓嶆槸寮傚父瀹夊叏鐨勩傚洜涓轟竴鏃﹀嚱鏁頒腑鎶涘嚭寮傚父錛岄偅涔坉elete pfile;榪欏彞浠g爜灝嗘病鏈夋満浼氳鎵ц銆?br>
C
++棰嗗煙鐨勮浣嶅ぇ鐗涗滑鍛婅鎴戜滑錛氬鏋滄兂瑕佸湪娌℃湁GC鐨勬儏鍐典笅紜繚璧勬簮瀹夊叏鍜屽紓甯稿畨鍏紝閭d箞璇蜂嬌鐢ㄦ櫤鑳芥寚閽堬細
void fun4() {
    auto_ptr
<file> spfile(new file("my.txt"));
     
//鎿嶄綔鏂囦歡
//姝ゅ錛宻pfile緇撴潫鐢熷懡鍛ㄦ湡鐨勬椂鍊欙紝浼氶噴鏀撅紙delete錛夊璞?/span>
閭d箞錛屾櫤鑳芥寚閽堝張鏄庝箞鍋氬埌鐨勫憿錛熶笅闈㈢殑浠g爜鍛婅瘔浣犲叾涓殑鎶婃垙錛堝叧浜庢櫤鑳芥寚閽堢殑鏇磋繘涓姝ョ殑鍐呭錛岃鍙傝僺td::auto_ptr錛宐oost鎴杝hared_ptr鐨勬櫤鑳芥寚閽堬級銆?br>涔熷氨鏄錛屾櫤鑳芥寚閽堥氳繃RAII鏉ョ‘淇濆唴瀛樿祫婧愮殑瀹夊叏錛屼篃闂存帴鍦頒嬌寰楀璞′笂鐨凴AII寰楀埌瀹炴柦銆備笉榪囷紝榪欓噷鐨凴AII騫朵笉鏄崄鍒嗕弗鏍鹼細瀵硅薄錛堟墍鍗犵殑鍐呭瓨涔熸槸璧勬簮錛夌殑鍒涘緩錛堣祫婧愯幏鍙栵級鏄湪鏋勯犲嚱鏁頒箣澶栬繘琛岀殑銆傚箍涔変笂錛屾垜浠篃鎶婂畠鍒掑綊RAII鑼冪暣銆?br>浣嗘槸錛孧atthew Wilson鍦ㄣ奍mperfect C++銆嬩竴涔︿腑錛屽皢鍏剁嫭绔嬪嚭鏉ワ紝縐板叾涓篟RID錛圧esource Release Is Destruction錛夈?br>RRID鐨勫疄鏂介渶瑕佸湪綾葷殑寮鍙戣呭拰浣跨敤鑰呬箣闂村緩绔嬪綰︼紝閲囩敤鐩稿悓鐨勬柟娉曡幏鍙栧拰閲婃斁璧勬簮銆傛瘮濡傦紝濡傛灉鍦╯hared_ptr鏋勯犳椂浣跨敤malloc()錛屼究浼氬嚭鐜伴棶棰橈紝鍥犱負shared_ptr鏄氳繃delete閲婃斁瀵硅薄鐨勩?br>


澶╀笅 2011-03-22 14:25 鍙戣〃璇勮
]]>
C++璇█鐨勫姩鎬佽仈緙栨妧鏈墫鏋?/title><link>http://www.shnenglu.com/aaxron/archive/2010/10/27/131429.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Wed, 27 Oct 2010 01:12:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2010/10/27/131429.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/131429.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2010/10/27/131429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/131429.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/131429.html</trackback:ping><description><![CDATA[<span style="font-family: Verdana;">鑱旂紪鐨勬蹇?/span><br style="font-family: Verdana;"><span style="font-family: Verdana;">    鍦–++涓?鑱旂紪(binding)灝辨槸浣夸竴涓綆楁満紼嬪簭鐨勪笉鍚岄儴鍒嗗郊姝ゅ叧鑱旂殑榪囩▼.</span><br style="font-family: Verdana;"><span style="font-family: Verdana;">鍦ㄨ繖涓繃紼嬩腑瀵瑰皢姣忎釜鍑芥暟璋冪敤鍒嗛厤鍐呭瓨鍦板潃,騫朵笖瀵瑰閮ㄨ闂篃鍒嗛厤姝g‘鐨勫唴瀛樺湴鍧,鏍規嵁榪涜鑱旂紪鎵澶勯樁孌電殑涓嶅悓,鍙互鍒嗕負涓ょ涓嶅悓鐨勮仈緙栨柟娉?闈欐佽仈緙栧拰鍔ㄦ佽仈緙?婊炲悗鑱旂紪).</span><br style="font-family: Verdana;"><br style="font-family: Verdana;"><span style="font-family: Verdana;">鍦ㄧ紪璇戦樁孌靛喅瀹氭墽琛屽摢涓悓鍚嶇殑琚皟鐢ㄥ嚱鏁?縐頒負闈欐佽仈緙?</span><br style="font-family: Verdana;"><span style="font-family: Verdana;">闈欐佽仈緙栧湪緙栬瘧闃舵灝卞繀欏諱簡瑙f墍鏈夌殑鍑芥暟鎴栨ā鍧楁墽琛屾墍闇瑕佹嫻嬬殑淇℃伅,瀹冨鍑芥暟鐨勯夋嫨鏄熀浜庢寚鍚戝璞$殑鎸囬拡(鎴栬呭紩鐢?鐨勭被鍨?</span><br style="font-family: Verdana;"><br style="font-family: Verdana;"><span style="font-family: Verdana;">鍙嶄箣鍦ㄧ紪鐮侀樁孌典笉鑳藉喅瀹氭墽琛屽摢涓悓鍚嶇殑琚皟鐢ㄥ嚱鏁?鍙湪鎵ц闃舵鎵嶈兘鏍規嵁鍦拌澶勭悊鐨勫璞$被鍨嬫潵鍐沖畾鎵ц鍝釜綾葷殑鎴愬憳鍑芥暟,榪欑О涓哄姩鎬佽仈緙?</span><br style="font-family: Verdana;"><span style="font-family: Verdana;">鍔ㄦ佽仈緙栧鎴愬憳鍑芥暟鐨勯夋嫨涓嶆槸鍩轟簬鎸囬拡鎴栧紩鐢?鑰屾槸鍩轟簬瀵硅薄綾誨瀷,閽堝涓嶅悓鐨勫璞$被鍨嬪皢浣滃嚭涓嶅悓鐨勭紪璇戠粨鏋?</span><br style="font-family: Verdana;"><span style="font-family: Verdana;">褰撴秹鍙婂埌澶氭佹у拰铏氬嚱鏁版椂灝卞簲璇ヤ嬌鐢ㄥ姩鎬佽仈.</span><br style="font-family: Verdana;"><br style="font-family: Verdana;"><span style="font-family: Verdana;">鍔ㄦ佽仈緙栧繀欏誨寘鎷互涓嬫柟闈細</span><br style="font-family: Verdana;"><span style="font-family: Verdana;">鎴愬憳鍑芥暟蹇呴』鐢蟲槑涓簐irtual</span><br style="font-family: Verdana;"><span style="font-family: Verdana;">濡傛灉鍩虹被涓敵鏄庝簡涓鴻櫄鍑芥暟錛屽垯媧劇敓綾諱腑涓嶅繀鍐嶇敵鏄庛?/span><br style="font-family: Verdana;"><br style="font-family: Verdana;"><span style="font-family: Verdana;">璋冪敤鏂瑰紡錛?/span><br style="font-family: Verdana;"><span style="font-family: Verdana;">閫氳繃瀵硅薄鐨勬寚閽堟垨寮曠敤璋冪敤鎴愬憳鍑芥暟錛涙垨閫氳繃鎴愬憳鍑芥暟璋冪敤 </span><br style="font-family: Verdana;"><br style="font-family: Verdana;"><span style="font-family: Verdana;">C++澶氭佹ф満鍒?/span><br style="font-family: Verdana;"><span style="font-family: Verdana;">澶氭佹у湪C++閲岄潰鍏蜂綋琛ㄧ幇涓?閫氳繃鍩虹被鎸囬拡璁塊棶媧劇敓綾葷殑鍑芥暟鍜屾柟娉? </span><br style="font-family: Verdana;"><br style="font-family: Verdana;"><span style="font-family: Verdana;">浠g爜濡備笅:</span><br style="font-family: Verdana;"> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%; font-family: Verdana;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include   </span><span style="color: #000000;"><</span><span style="color: #000000;">iostream</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include   </span><span style="color: #000000;"><</span><span style="color: #000000;">typeinfo</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> std;<br></span><span style="color: #0000ff;">class</span><span style="color: #000000;">   A<br>{<br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>    </span><span style="color: #0000ff;">virtual</span><span style="color: #000000;">   </span><span style="color: #0000ff;">void</span><span style="color: #000000;">   fun(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br>    {<br>        cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">This   is   class   A! </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;">endl;<br>    }<br>};<br></span><span style="color: #0000ff;">class</span><span style="color: #000000;">   B   :   </span><span style="color: #0000ff;">public</span><span style="color: #000000;">   A<br>{<br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>    </span><span style="color: #0000ff;">void</span><span style="color: #000000;">   fun(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br>    {<br>        cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">This   is   class   B! </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;">endl;<br>    }<br>};<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br>{<br>    A   aa,</span><span style="color: #000000;">*</span><span style="color: #000000;">p;<br>    B   bb;<br>    p</span><span style="color: #000000;">=&</span><span style="color: #000000;">bb;<br>    p</span><span style="color: #000000;">-></span><span style="color: #000000;"> fun();<br>    p</span><span style="color: #000000;">=&</span><span style="color: #000000;">aa;<br>    p</span><span style="color: #000000;">-></span><span style="color: #000000;"> fun();<br>    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}</span></div> <br style="font-family: Verdana;"><br> <img src ="http://www.shnenglu.com/aaxron/aggbug/131429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2010-10-27 09:12 <a href="http://www.shnenglu.com/aaxron/archive/2010/10/27/131429.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.xhlwd.cn" target="_blank">久久精品国产亚洲av水果派</a>| <a href="http://www.lordswar.cn" target="_blank">国产99久久久国产精品~~牛</a>| <a href="http://www.hoay.com.cn" target="_blank">性高朝久久久久久久久久</a>| <a href="http://www.vfmg.cn" target="_blank">久久99精品国产麻豆蜜芽</a>| <a href="http://www.arouk.cn" target="_blank">久久综合亚洲色HEZYO国产</a>| <a href="http://www.hankale.cn" target="_blank">狠狠色婷婷久久综合频道日韩</a>| <a href="http://www.oftr.cn" target="_blank">久久久精品人妻一区二区三区四 </a>| <a href="http://www.fscre.cn" target="_blank">99久久婷婷国产一区二区</a>| <a href="http://www.sfsqw.cn" target="_blank">国产亚洲精久久久久久无码AV</a>| <a href="http://www.12530downs.com.cn" target="_blank">久久99精品国产99久久6</a>| <a href="http://www.wanrengou.cn" target="_blank">亚洲午夜久久久久久久久久</a>| <a href="http://www.zgktjj.cn" target="_blank">久久免费线看线看</a>| <a href="http://www.sanmiaoyidai.cn" target="_blank">国内精品伊人久久久久妇</a>| <a href="http://www.xhcedu.cn" target="_blank">久久国产精品久久精品国产</a>| <a href="http://www.fvnnv.cn" target="_blank">亚洲国产成人精品无码久久久久久综合 </a>| <a href="http://www.qq577.cn" target="_blank">91久久精品无码一区二区毛片</a>| <a href="http://www.softplat.cn" target="_blank">日韩精品无码久久一区二区三</a>| <a href="http://www.chiom.cn" target="_blank">人妻无码αv中文字幕久久琪琪布</a>| <a href="http://www.76288.com.cn" target="_blank">久久综合欧美成人</a>| <a href="http://www.uzri.cn" target="_blank">亚洲AV日韩精品久久久久</a>| <a href="http://www.grandfreshop.cn" target="_blank">国产精品永久久久久久久久久</a>| <a href="http://www.vcyw.cn" target="_blank">精品国产乱码久久久久久郑州公司</a>| <a href="http://www.jsjingkou.cn" target="_blank">久久久噜噜噜久久中文字幕色伊伊</a>| <a href="http://www.zixunlawyer.com.cn" target="_blank">亚洲va久久久噜噜噜久久狠狠 </a>| <a href="http://www.92625.cn" target="_blank">国产精品久久99</a>| <a href="http://www.legxcn.cn" target="_blank">性欧美大战久久久久久久久 </a>| <a href="http://www.dgtspcb.com.cn" target="_blank">色狠狠久久AV五月综合</a>| <a href="http://www.linuxls.cn" target="_blank">亚洲国产小视频精品久久久三级</a>| <a href="http://www.1122sw.cn" target="_blank">久久国产精品99久久久久久老狼</a>| <a href="http://www.135gkr4.cn" target="_blank">久久久久亚洲AV无码观看</a>| <a href="http://www.enld.cn" target="_blank">欧洲性大片xxxxx久久久</a>| <a href="http://www.ilovegou.cn" target="_blank">一本一道久久精品综合</a>| <a href="http://www.shdad.cn" target="_blank">老司机国内精品久久久久</a>| <a href="http://www.92mo.cn" target="_blank">国产午夜精品久久久久免费视</a>| <a href="http://www.fvnnv.cn" target="_blank">一本色道久久88精品综合</a>| <a href="http://www.rsfrw.cn" target="_blank">久久久精品人妻一区二区三区蜜桃</a>| <a href="http://www.mosphere.cn" target="_blank">久久91精品综合国产首页</a>| <a href="http://www.cdmt.org.cn" target="_blank">国产免费久久精品丫丫</a>| <a href="http://www.hzust.cn" target="_blank">国产精品99久久久久久宅男</a>| <a href="http://www.139shops.cn" target="_blank">99精品久久久久久久婷婷</a>| <a href="http://www.jfjn.net.cn" target="_blank">国产女人aaa级久久久级</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>