锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品乱码久久久久久久久,免费成人在线视频网站,香蕉成人久久http://www.shnenglu.com/eXile/category/7018.htmlzh-cnThu, 28 Jan 2010 22:25:02 GMTThu, 28 Jan 2010 22:25:02 GMT60璇磋C++鏅鴻兘鎸囬拡(2): 鏍囧噯搴撲腑鐨勬櫤鑳芥寚閽?/title><link>http://www.shnenglu.com/eXile/archive/2009/11/16/101062.html</link><dc:creator>eXile</dc:creator><author>eXile</author><pubDate>Mon, 16 Nov 2009 05:57:00 GMT</pubDate><guid>http://www.shnenglu.com/eXile/archive/2009/11/16/101062.html</guid><wfw:comment>http://www.shnenglu.com/eXile/comments/101062.html</wfw:comment><comments>http://www.shnenglu.com/eXile/archive/2009/11/16/101062.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/eXile/comments/commentRss/101062.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/eXile/services/trackbacks/101062.html</trackback:ping><description><![CDATA[ <p><span style="FONT-FAMILY: courier new; FONT-SIZE: 12pt">  <span style="FONT-FAMILY: Courier">浣跨敤鏅鴻兘鎸囬拡鏄疌++涓父鐢ㄧ殑綆$悊鍐呭瓨鐨勬柟寮忋傚叧浜庢櫤鑳芥寚閽堢殑璁捐錛屽悇璺疌++楂樻墜涔熸槸鍚勫睍紲為氥?br><br>  鍦?994騫? Greg Colvin鍚慍++鏍囧噯濮斿憳浼?xì)鎻愬囖Z簡鑷繁璁捐鐨勬櫤鑳芥寚閽堬細(xì)auto_ptr鍜宑ounted_ptr銆俛uto_ptr瀹炵幇鍩烘湰鐨凴AII綆$悊錛屼笉鍙鍒訛紱counted_ptr閲囩敤寮曠敤璁℃暟瀹炵幇浜嗕竴涓彲澶嶅埗鐨勬櫤鑳芥寚閽堛備袱鑰呯敤浜庝笉鍚岀殑鍦哄悎銆?br>  浣嗘槸鏍囧噯濮斿憳浼?xì)鏈緇堝彧閫氳繃浜哸uto_ptr錛屽茍涓斿auto_ptr鍔犲叆浜嗕竴涓彜鎬殑“鎵鏈夋潈杞Щ”璇箟銆傚悗鏉uto_ptr鍜宑ounted_ptr榪涘叆浜咮oost C++ 搴擄紝鏀瑰悕涓簊coped_ptr鍜宻hared_ptr銆?br>  <br>  std::auto_ptr鍙墍浠ヨ璁′負(fù)鍙嫹璐濈殑錛屼篃璁告槸鍑轟簬浠ヤ笅鑰冭檻錛屾瘮濡備笅渚嬪嚱鏁幫細(xì)</span></span></p> <font size="4"> <div style="border-left-color: rgb(204, 204, 204); padding-bottom: 4px; background-color: rgb(238, 238, 238); padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; padding-top: 4px; "><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> f1(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> ptr);<br></span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> f2();</span></div> </font><p><font size="4">  </font><span style="FONT-SIZE: 12pt"> f1涓殑鍙傛暟鎵鎸囧悜鐨勫璞″簲璇ョ敱璋佹潵鍒犻櫎鍛紵璋冪敤鑰呰繕鏄璋冪敤鑰咃紵濡傛灉涓嶇湅紼嬪簭鏂囨。鐨勮瘽錛屾棤娉曠煡閬撹繖涓鐐廣俧2鍑芥暟涔熷瓨鍦ㄥ悓鏍風(fēng)殑闂銆?br><br>   鐢╝uto_ptr鍙互娑堥櫎榪欑姝т箟鎬э細(xì)</span></p> <font size="4"> <div style="border-left-color: rgb(204, 204, 204); padding-bottom: 4px; background-color: rgb(238, 238, 238); padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; padding-top: 4px; "><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> f1(auto_ptr</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> ptr);<br>auto_ptr</span><span style="COLOR: #000000"><</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> f2();</span></div> </font><p><font size="4">  <br></font>      <span style="FONT-FAMILY: courier new">灝界濡傛錛宎uto_ptr鐨?#8220;鎵鏈夋潈杞Щ”璇箟榪樻槸浼?xì)甯︽潵鍓綔鐢ㄥQ屽洜涓轟細(xì)淇敼鍘熷肩殑甯擱噺鎷瘋礉榪濊儗浜嗕竴鑸殑璁捐鍘熷垯錛屽畠涔熻浼?xì)鍦ㄤ綘鎰忔兂涓嶅埌鐨勬儏鍐典笅灏辨妸瀵硅薄铦{縐諱簡銆傚畠涔熶笉鑳界敤浜庢爣鍑嗗鍣ㄤ腑銆?br>   鎵浠uto_ptr鍦ㄦ柊鐨勬爣鍑嗗簱宸茬粡涓嶅啀鎺ㄨ崘浣跨敤銆傚彇鑰屼唬涔嬬殑鏄痷nique_ptr銆倁nique_ptr涓巃uto_ptr綾諱技錛屼絾闄愬埗浜哸uto_ptr鐨勬嫹璐濊涓恒傚悓鏃訛紝鍍忎笂闈婦鐨勪緥瀛愪竴鏍鳳紝unique_ptr鍙互浣滀負(fù)鍑芥暟鐨勫弬鏁板拰榪斿洖鍊間嬌鐢ㄣ傝繖鏄洜涓篊++澧炲姞浜嗕竴涓柊鐨勭壒寰侊細(xì)鍙沖煎紩鐢ㄣ?br><br>   shared_ptr涔熻繘鍏ヤ簡鏍囧噯搴撱傚浜庡紩鐢ㄨ鏁扮殑鏅鴻兘鎸囬拡鑰岃█錛屽驚鐜紩鐢ㄦ槸涓涓ぇ闂銆傛爣鍑嗗簱涓烘鎶妔hared_ptr瀹氫箟涓哄己寮曠敤鎸囬拡錛屽畠榪樺疄鐜頒簡涓涓急寮曠敤鎸囬拡weak_ptr銆傛樉鐒訛紝鏍囧噯搴撳茍娌℃湁浠庢牴鏈笂瑙e喅寰幆寮曠敤鐨勯棶棰橈紝瀹冩妸榪欎釜闂浜ょ粰浜嗙▼搴忓憳銆傚湪涓涓畝鍗曠殑緋葷粺涓紝浣犲彲浠ュ尯鍒嗕嬌鐢╯hared_ptr鍜寃eak_ptr錛屼互姝ゆ潵閬垮厤鍑虹幇寰幆寮曠敤銆備絾鏄湪涓涓ぇ鐨勫璞$郴緇熶腑錛屾湁鏃惰繕鏄鏄撳嚭閿欍傚驚鐜紩鐢ㄧ殑闂錛屼弗閲嶅噺寮變簡shared_ptr鐨勫彲鐢ㄦс?br><br>   閭d箞鑳戒笉鑳借嚜鍔ㄦ嫻嬫槸鍚﹀嚭鐜板驚鐜紩鐢ㄥ憿錛熶簨瀹炰笂錛屽浜巗hared_ptr榪欑浣跨敤闈炰鏡鍏ュ紡絳栫暐瀹炵幇鐨勬櫤鑳芥寚閽堬紝鏄緢闅懼疄鐜拌嚜鍔ㄦ嫻嬬殑銆備絾鏄鏋滈噰鐢ㄤ鏡鍏ュ紡璁捐錛屾垜浠彲浠ュ紩鍏ヤ竴浜涙帴鍙o紝鏉ヨВ鍐寵繖涓棶棰樸傚驚鐜紩鐢ㄧ殑媯嫻嬶紝瀹為檯涓婃槸鍥捐涓殑鍥炶礬媯嫻嬮棶棰樸?br></span><br>      鏈枃鐢?a style="FONT-SIZE: 12pt" title="eXile" href="http://www.shnenglu.com/eXile/">eXile</a><span style="FONT-SIZE: 12pt"> 鍘熷垱錛岃漿杞借琛ㄦ槑鍘熻創(chuàng)鍦板潃銆?nbsp;</span><a href="http://www.shnenglu.com/eXile/">http://www.shnenglu.com/eXile/</a>銆?/p><img src ="http://www.shnenglu.com/eXile/aggbug/101062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/eXile/" target="_blank">eXile</a> 2009-11-16 13:57 <a href="http://www.shnenglu.com/eXile/archive/2009/11/16/101062.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璇磋C++鏅鴻兘鎸囬拡(1): 鍏充簬shared_ptrhttp://www.shnenglu.com/eXile/archive/2009/11/02/99995.htmleXileeXileMon, 02 Nov 2009 09:38:00 GMThttp://www.shnenglu.com/eXile/archive/2009/11/02/99995.htmlhttp://www.shnenglu.com/eXile/comments/99995.htmlhttp://www.shnenglu.com/eXile/archive/2009/11/02/99995.html#Feedback2http://www.shnenglu.com/eXile/comments/commentRss/99995.htmlhttp://www.shnenglu.com/eXile/services/trackbacks/99995.html   shared_ptr鏄柊鐨勬爣鍑嗗簱鐨勪竴涓富瑕佹垚鍛橈紝浣滀負(fù)涓涓潪宓屽叆寮忕殑鏅鴻兘鎸囬拡錛屽叾璁捐鍙皳宸茬粡鏄粸灝借剳姹併傚綋鐒訛紝榪樻湁寰堝浜哄瀹冩彁鍑轟簡涓嶆弧銆傛病鏈夊畬緹庣殑璁捐錛屽彧鏈夊悎閫傜殑璁捐銆?br>
1. shared_ptr鏈澶х殑鐗圭偣鏄帴鍙g殑綆鍗曟т笌瀹炵幇鐨勭伒媧繪с?br>    瀵逛簬shared_ptr<Object>,object鐨勫唴瀛樼鐞嗘槸鍙畾鍒剁殑錛岀敋鑷沖彲浠ュ畾鍒跺紩鐢ㄨ鏁扮粨鐐圭殑鍐呭瓨鍒嗛厤錛屼互婊¤凍瀵瑰唴瀛樻湁鐗規(guī)畩瑕佹眰鐨勬儏鍐點(diǎn)傝岃繖涓鍒囷紝閮借Object鐨勫疄鐜拌呴殣钘忚搗鏉ワ紝浣跨敤Object鐨勫鎴風(fēng)被鏄笉鐢ㄥ叧蹇冪殑銆傝繖鍜屼互鍓嶆爣鍑嗗簱鐨勭粍浠跺疄鐜扮瓥鐣ユ湁浜涗笉鍚屻傛瘮濡傝, vector<int, A1>鍜寁ector<int, A2>錛岀敱浜庡唴瀛樺垎閰嶇瓥鐣ョ殑涓嶅悓錛岃屽彉鎴愮被鍨嬬殑涓嶅悓錛岄犳垚鎺ュ彛鐨勬敼鍙樸?/span>榪欎竴鐐瑰湪shared_ptr鐨勮璁℃椂琚伩鍏嶄簡錛屽綋鐒朵互涓瀹氱殑鎬ц兘浠d環(huán)銆俿hared_ptr浣滀負(fù)C++闈㈠悜瀵硅薄璁捐鐨勪竴涓噸瑕佺粍浠訛紝鎺ュ彛鐨勭畝鍗曟ф槸寰堥噸瑕佺殑錛屽繀欏昏鏈?/span>鎺ュ彛鍜屽疄鐜扮殑鍒嗙銆備笌姝ょ浉浼肩殑榪樻湁tr1::function鐨勮璁°?br>
2.鍦ㄥ悓涓浣撶郴涓紝鍚勭綾誨瀷鐨勬櫤鑳芥寚閽堝彲浠ヤ簰鐩歌漿鎹€?br>
   濡備笅渚嬶細(xì)

struct Object : InterfaceA, InterfaceB {
    MemberA memberA;
};


shared_ptr
<Object> obj(new Object);
shared_ptr
<InterfaceA> a = obj;
shared_ptr
<InterfaceB> b = obj;
shared_ptr<Object> p = static_pointer_cast<Object>(b);
shared_ptr<void> p2 = obj;


  鐢氳嚦榪樺彲浠ュ彇寰楁暟鎹垚鍛樼殑鏅鴻兘鎸囬拡錛?br>
shared_ptr<Object> obj(new Object);
shared_ptr
<MemberA> memberA(obj, &obj->memberA);


  鍐嶆潵璇磋shared_ptr鐨勭己鐐廣?br>

1.瀵逛簬浣跨敤寮曠敤璁℃暟鐨勬櫤鑳芥寚閽堟潵璇達(dá)紝蹇呴』瑕佸皬蹇冨嚭鐜板驚鐜紩鐢ㄣ?br>     鍦ㄩ噸搴︿嬌鐢?/span>shared_ptr鐨勭郴緇熶腑錛屼綘蹇呴』涓寮濮嬪氨鏄庣‘綾諱笌綾葷殑鍏崇郴錛屼互鍐沖畾鍝噷浣跨敤shared_ptr錛屽摢閲屼嬌鐢?/span>weak_ptr錛屽惁鍒欏氨浼?xì)鍑虹幇鍐呭瓨娉勯湆觻傝?span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: #000000; WORD-SPACING: 0px" class=Apple-style-span>shared_ptr鐨勬帴鍙?/span>杞崲鐨勭伒媧繪э紝涔熷緢瀹規(guī)槗瀵艱嚧鏅鴻兘鎸囬拡琚互鐢ㄣ?/span>鍐呭瓨鑷姩綆$悊鐨勯棶棰樺茍娌℃湁寰楀埌瑙e喅錛屽畠鍙槸琚漿縐諱簡銆?br>
2.shared_ptr浣跨敤闈炲祵鍏ュ紡璁捐錛岃繖鏍峰彲浠ヤ嬌鐢ㄤ簬鍩烘湰綾誨瀷錛屾瘮濡?shared_ptr<int>銆備絾鏄牴鎹釜浜虹粡楠岋紝榪欑鎯呭喌鍦ㄥ緢灝戜嬌鐢ㄣ傚ぇ閮ㄥ垎鎯呭喌榪樻槸浣跨敤鑷繁璁捐鐨勭被銆傝繖鏈変竴涓棶棰橈紝灝辨槸娌℃湁寰堟柟渚跨殑鍔炴硶瀹炵幇this鎸囬拡鍜?/span>鏅鴻兘鎸囬拡鐨勮漿鎹€傛爣鍑嗗簱涓彁渚涗簡enable_shared_from_this綾繪潵瑙e喅榪欎釜闂銆備絾榪?/span>宸茬粡浣挎墍璋撶殑闈炲祵鍏ュ紡璁捐寰掓湁铏氬悕銆傝屽亣濡備竴寮濮嬮噰鐢?span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: #000000; WORD-SPACING: 0px" class=Apple-style-span>宓屽叆寮忚璁$殑璇濓紝鍒欏湪鎬ц兘浠d環(huán)鍜屽綰跨▼璁捐鏂歸潰鍏鋒湁鏇村ぇ鐨勭伒媧繪с?/span>



eXile 2009-11-02 17:38 鍙戣〃璇勮
]]>
鏈綆鍗曠殑foreach瀹炵幇(VC & GCC)http://www.shnenglu.com/eXile/archive/2009/05/08/82201.htmleXileeXileThu, 07 May 2009 17:25:00 GMThttp://www.shnenglu.com/eXile/archive/2009/05/08/82201.htmlhttp://www.shnenglu.com/eXile/comments/82201.htmlhttp://www.shnenglu.com/eXile/archive/2009/05/08/82201.html#Feedback10http://www.shnenglu.com/eXile/comments/commentRss/82201.htmlhttp://www.shnenglu.com/eXile/services/trackbacks/82201.html闃呰鍏ㄦ枃

eXile 2009-05-08 01:25 鍙戣〃璇勮
]]>
[T] 鍒╃敤QT榪涜web涓庢湰鍦版販鍚堝簲鐢ㄥ紑鍙?http://www.shnenglu.com/eXile/archive/2009/03/09/75997.htmleXileeXileMon, 09 Mar 2009 08:41:00 GMThttp://www.shnenglu.com/eXile/archive/2009/03/09/75997.htmlhttp://www.shnenglu.com/eXile/comments/75997.htmlhttp://www.shnenglu.com/eXile/archive/2009/03/09/75997.html#Feedback6http://www.shnenglu.com/eXile/comments/commentRss/75997.htmlhttp://www.shnenglu.com/eXile/services/trackbacks/75997.html闃呰鍏ㄦ枃

eXile 2009-03-09 16:41 鍙戣〃璇勮
]]>
涓涓皬鐤戦棶錛欳++澶存枃浠朵腑鐨勯潤鎬佸叏灞鍙橀噺http://www.shnenglu.com/eXile/archive/2009/01/09/71567.htmleXileeXileFri, 09 Jan 2009 03:42:00 GMThttp://www.shnenglu.com/eXile/archive/2009/01/09/71567.htmlhttp://www.shnenglu.com/eXile/comments/71567.htmlhttp://www.shnenglu.com/eXile/archive/2009/01/09/71567.html#Feedback18http://www.shnenglu.com/eXile/comments/commentRss/71567.htmlhttp://www.shnenglu.com/eXile/services/trackbacks/71567.html   姣斿涓嬮潰榪欎釜鍙橀噺瀹氫箟鍦ㄤ竴涓ご鏂囦歡涓細(xì)
static int data[1024*1024];
   鎴戞妸榪欎釜鏂囦歡鍚屾椂鍖呭惈鍦ㄥ嚑涓猚pp鏂囦歡涓紝鎸夋垜鐨勭悊瑙o紝榪欎釜紼嬪簭鍗犵敤鐨勫唴瀛樺簲璇ユ樉钁楀澶э紝浣嗘槸錛屼粠瀹為檯榪愯緇撴灉鏉ョ湅錛屽茍娌℃湁鍙樺寲錛岀敓鎴愮殑exe鏂囦歡澶у皬涔熸病鏈夊彉鍖栵紝榪欐槸鍥犱負(fù)寤惰繜鍔犺澆鍛紝榪樻槸琚紪璇戝櫒浼樺寲鎺変簡錛熸湁娌℃湁鏄庣櫧鐨勮揪浜鴻В閲婁竴涓嬨?br>



eXile 2009-01-09 11:42 鍙戣〃璇勮
]]>
鐢↖CE瀹炵幇涓涓畝鍗曠殑鑱婂ぉ瀹?/title><link>http://www.shnenglu.com/eXile/archive/2009/01/04/ice.html</link><dc:creator>eXile</dc:creator><author>eXile</author><pubDate>Sat, 03 Jan 2009 17:32:00 GMT</pubDate><guid>http://www.shnenglu.com/eXile/archive/2009/01/04/ice.html</guid><wfw:comment>http://www.shnenglu.com/eXile/comments/71099.html</wfw:comment><comments>http://www.shnenglu.com/eXile/archive/2009/01/04/ice.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.shnenglu.com/eXile/comments/commentRss/71099.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/eXile/services/trackbacks/71099.html</trackback:ping><description><![CDATA[     鎽樿: 鑱婂ぉ瀹ゆ槸涓縐嶅吀鍨嬬殑緗戠粶搴旂敤錛岃繖涓▼搴忔紨紺轟簡ICE妗嗘灦鐨勫熀鏈粨鏋勩?nbsp; <a href='http://www.shnenglu.com/eXile/archive/2009/01/04/ice.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/eXile/aggbug/71099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/eXile/" target="_blank">eXile</a> 2009-01-04 01:32 <a href="http://www.shnenglu.com/eXile/archive/2009/01/04/ice.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍒╃敤scons緙栬瘧Qt搴旂敤http://www.shnenglu.com/eXile/archive/2008/10/21/qt-cons.htmleXileeXileTue, 21 Oct 2008 15:48:00 GMThttp://www.shnenglu.com/eXile/archive/2008/10/21/qt-cons.htmlhttp://www.shnenglu.com/eXile/comments/64663.htmlhttp://www.shnenglu.com/eXile/archive/2008/10/21/qt-cons.html#Feedback1http://www.shnenglu.com/eXile/comments/commentRss/64663.htmlhttp://www.shnenglu.com/eXile/services/trackbacks/64663.html闃呰鍏ㄦ枃

eXile 2008-10-21 23:48 鍙戣〃璇勮
]]>
Google C++ Testing Framework Primer(zt)http://www.shnenglu.com/eXile/archive/2008/07/21/56738.htmleXileeXileMon, 21 Jul 2008 03:35:00 GMThttp://www.shnenglu.com/eXile/archive/2008/07/21/56738.htmlhttp://www.shnenglu.com/eXile/comments/56738.htmlhttp://www.shnenglu.com/eXile/archive/2008/07/21/56738.html#Feedback0http://www.shnenglu.com/eXile/comments/commentRss/56738.htmlhttp://www.shnenglu.com/eXile/services/trackbacks/56738.html

Google C++ Testing Framework Primer



緲昏瘧錛?a target="_blank">Ray Li (ray.leex@gmail.com)
淇敼鏃ユ湡錛?008騫?鏈?鏃?br>鍘熸枃鍙傝錛?a >http://code.google.com/p/googletest/wiki/GoogleTestPrimer

璇戞枃鍦板潃錛歨ttp://www.javaeye.com/topic/212024

 

Introduction錛氫負(fù)浠涔堥渶瑕?/strong>Google C++ 嫻嬭瘯妗嗘灦錛?/strong>

 

Google C++ 嫻嬭瘯妗嗘灦甯姪浣犳洿濂藉湴緙栧啓C(jī)++嫻嬭瘯銆?

 

鏃犺浣犳槸鍦↙inux錛學(xué)indows錛岃繕鏄疢ac鐜涓嬪伐浣滐紝鍙浣犵紪鍐機(jī)++浠g爜錛?span class="hilite1">Google 嫻嬭瘯妗嗘灦閮藉彲浠ュ府涓婂繖銆?

 

閭d箞錛屽摢浜涘洜绱犳墠鑳芥瀯鎴愪竴涓ソ鐨勬祴璇曪紵浠ュ強(qiáng)錛?span class="hilite1">Google C++ 嫻嬭瘯妗嗘灦鎬庢牱婊¤凍榪欎簺鍥犵礌錛熸垜浠浉淇★細(xì)

  1. 嫻嬭瘯搴旇鏄?em>鐙珛銆?em>鍙噸澶?/em>鐨勩傚洜涓哄叾浠栨祴璇曟垚鍔熸垨澶辮觸鑰屽鑷存垜浠瀵硅嚜宸辯殑嫻嬭瘯榪涜debug鏄潪甯哥棝鑻︾殑銆?span class="hilite1">Google C++ 嫻嬭瘯妗嗘灦閫氳繃灝嗘瘡涓祴璇曞湪涓嶅悓鐨勫璞′腑榪愯錛屼嬌寰楁祴璇曞垎紱誨紑鏉ャ傚綋涓涓祴璇曞け璐ユ椂錛?span class="hilite1">Google C++ 嫻嬭瘯妗嗘灦鍏佽浣犵嫭绔嬭繍琛屽畠浠ヨ繘琛屽揩閫熼櫎閿欍?
  2. 嫻嬭瘯搴旇鑳藉琚緢濂藉湴緇勭粐錛屽茍鍙嶆槧琚祴浠g爜鐨勭粨鏋勩?span class="hilite1">Google C++ 嫻嬭瘯妗嗘灦灝嗘祴璇曠粍緇囨垚嫻嬭瘯妗堜緥錛屾渚嬩腑鐨勬祴璇曞彲浠ュ叡浜暟鎹拰紼嬪簭鍒嗘敮銆傝繖鏍蜂竴縐嶉氱敤妯″紡鑳藉寰堝鏄撹鯨璇嗭紝浣垮緱鎴戜滑鐨勬祴璇曞鏄撶淮鎶ゃ傚綋寮鍙戜漢鍛樺湪欏圭洰涔嬮棿杞崲錛屽紑濮嬪湪涓涓柊鐨勪唬鐮佸熀涓婂紑濮嬪伐浣滄椂錛岃繖縐嶄竴鑷存ф牸澶栨湁鐢ㄣ?
  3. 嫻嬭瘯搴旇鏄?em>鍙Щ妞?/em>銆?em>鍙噸鐢?/em>鐨勩傚紑婧愮ぞ鍖烘湁寰堝騫沖彴鐙珛鐨勪唬鐮侊紝瀹冧滑鐨勬祴璇曚篃搴旇鏄鉤鍙扮嫭绔嬬殑銆傞櫎寮涓浜涚壒孌婃儏鍐碉紝Google C++ 嫻嬭瘯妗嗘灦榪愯鍦ㄤ笉鍚岀殑鎿嶄綔緋葷粺涓娿佷笌涓嶅悓鐨勭紪璇戝櫒錛坓cc銆乮cc銆丮SVC錛夋惌閰嶏紝Google C++ 嫻嬭瘯妗嗘灦鐨勬祴璇曞緢瀹規(guī)槗涓庝笉鍚岀殑閰嶇疆涓璧峰伐浣溿?
  4. 褰撴祴璇曞け璐ユ椂錛屽簲璇ユ彁渚涘敖鍙兘澶氱殑銆佸叧浜庨棶棰樼殑淇℃伅銆?span class="hilite1">Google C++ 嫻嬭瘯妗嗘灦鍦ㄧ涓涓祴璇曞け璐ユ椂涓嶄細(xì)鍋滀笅鏉ャ傜浉鍙嶏紝瀹冨彧鏄皢褰撳墠嫻嬭瘯鍋滄錛岀劧鍚庣戶緇帴涓嬫潵鐨勬祴璇曘備綘涔熷彲浠ヨ緗涓浜涢潪鑷村懡鐨勯敊璇繘琛屾姤鍛婏紝騫舵帴鐫榪涜褰撳墠鐨勬祴璇曘傝繖鏍鳳紝浣犲氨鍙互鍦ㄤ竴嬈?#8220;榪愯-緙栬緫-緙栬瘧”寰幆涓鏌ュ埌騫朵慨澶嶅涓猙ug銆?
  5. 嫻嬭瘯妗嗘灦搴旇鑳藉皢嫻嬭瘯緙栧啓浜哄憳浠庝竴浜涚幆澧冪淮鎶ょ殑宸ヤ綔涓В鏀懼嚭鏉ワ紝浣夸粬浠兘澶熼泦涓簿鍔涗簬嫻嬭瘯鐨?em>鍐呭銆?span class="hilite1">Google C++ 嫻嬭瘯妗嗘灦鑷姩璁板綍涓嬫墍鏈夊畾涔夊ソ鐨勬祴璇曪紝涓嶉渶瑕佺敤鎴烽氳繃鍒椾婦鏉ユ寚鏄庡摢浜涙祴璇曢渶瑕佽繍琛屻?
  6. 嫻嬭瘯搴旇蹇?/em>銆備嬌鐢?span class="hilite1">Google C++ 嫻嬭瘯妗嗘灦錛屼綘鍙互閲嶇敤澶氫釜嫻嬭瘯鐨勫叡浜祫婧愶紝涓嬈℃у畬鎴愯緗?瑙i櫎璁劇疆錛岃屼笉鐢ㄤ嬌涓涓祴璇曞幓渚濊禆鍙︿竴嫻嬭瘯銆?/li>

鍥犱負(fù)Google C++ 嫻嬭瘯妗嗘灦鍩轟簬钁楀悕鐨剎Unit鏋舵瀯錛屽鏋滀綘涔嬪墠浣跨敤榪嘕Unit鎴朠yUnit鐨勮瘽錛屼綘灝嗕細(xì)鎰熻闈炲父鐔熸?zhèn)夈傚鏋滀綘娌℃湁鎺ヨЕ榪囪繖浜涙祴璇曟鏋訛紝瀹冧篃鍙細(xì)鍗犵敤浣犲ぇ綰?0鍒嗛挓鐨勬椂闂存潵瀛︿範(fàn)鍩烘湰姒傚康鍜屼笂鎵嬨傛墍浠ワ紝璁╂垜浠紑濮嬪惂錛?

 

Note錛氭湰鏂囧伓灝?dāng)浼?xì)鐢?#8220;Google Test”鏉ヤ唬鎸?#8220;Google C++ 嫻嬭瘯妗嗘灦”銆?

 

鍩烘湰姒傚康

 

浣跨敤Google Test鏃訛紝浣犳槸浠庣紪鍐?em>鏂█寮濮嬬殑錛岃屾柇璦鏄竴浜涙鏌ユ潯浠舵槸鍚︿負(fù)鐪熺殑璇彞銆備竴涓柇璦鐨勭粨鏋滃彲鑳芥槸鎴愬姛銆侀潪鑷村懡澶辮觸錛屾垨鑰呰嚧鍛藉け璐ャ傚鏋滀竴涓嚧鍛藉け璐ュ嚭鐜幫紝浠栦細(xì)緇撴潫褰撳墠鐨勫嚱鏁幫紱鍚﹀垯錛岀▼搴忕戶緇甯歌繍琛屻?

 

嫻嬭瘯浣跨敤鏂█鏉ラ獙璇佽嫻嬩唬鐮佺殑琛屼負(fù)銆傚鏋滀竴涓祴璇曞穿婧冩垨鏄嚭鐜頒竴涓け璐ョ殑鏂█錛岄偅涔堬紝璇ユ祴璇?em>澶辮觸錛涘惁鍒欒嫻嬭瘯鎴愬姛銆?

 

涓涓祴璇曟渚嬶紙test case錛夊寘鍚簡涓涓垨澶氫釜嫻嬭瘯銆備綘搴旇灝嗚嚜宸辯殑嫻嬭瘯鍒嗗埆褰掔被鍒版祴璇曟渚嬩腑錛屼互鍙嶆槧琚祴浠g爜鐨勭粨鏋勩傚綋嫻嬭瘯妗堜緥涓殑澶氫釜嫻嬭瘯闇瑕佸叡浜氱敤瀵硅薄鍜屽瓙紼嬪簭鏃訛紝浣犲彲浠ユ妸浠栦滑鏀懼埌涓涓祴璇曞浐浠訛紙test fixture錛夌被涓?

 

涓涓?em>嫻嬭瘯紼嬪簭鍙互鍖呭惈澶氫釜嫻嬭瘯妗堜緥銆?

 

浠庣紪鍐欏崟涓殑鏂█寮濮嬶紝鍒板垱寤烘祴璇曞拰嫻嬭瘯妗堜緥錛屾垜浠皢浼?xì)浠嬀l嶆庢牱緙栧啓涓涓祴璇曠▼搴忋?

 

鏂█

 

Google Test涓殑鏂█鏄竴浜涗笌鍑芥暟璋冪敤鐩鎬技鐨勫畯銆傝嫻嬭瘯涓涓被鎴栧嚱鏁幫紝鎴戜滑闇瑕佸鍏惰涓哄仛鍑烘柇璦銆傚綋涓涓柇璦澶辮觸鏃訛紝Google Test浼?xì)鍦ㄥ睆骞曚笂杈撳國櫙ヤ唬鐮佹墍鍦ㄧ殑婧愭枃浠跺強(qiáng)鍏舵墍鍦ㄧ殑浣嶇疆琛屽彿錛屼互鍙?qiáng)閿欒淇℃伅銆備篃鍙互鍦ㄧ紪鍐欐柇璦鏃訛紝鎻愪緵涓涓嚜瀹氫箟鐨勯敊璇俊鎭紝榪欎釜淇℃伅鍦ㄥけ璐ユ椂浼?xì)琚檮鍔犲?span class="hilite1">Google Test鐨勯敊璇俊鎭箣鍚庛?

 

鏂█甯稿父鎴愬鍑虹幇錛屽畠浠兘嫻嬭瘯鍚屼竴涓被鎴栬呭嚱鏁幫紝浣嗗褰撳墠鍔熻兘鏈夌潃涓嶅悓鐨勬晥鏋溿侫SSERT_*鐗堟湰鐨勬柇璦澶辮觸鏃朵細(xì)浜х敓鑷村懡澶辮觸錛屽茍緇撴潫褰撳墠鍑芥暟銆侲XPECT_*鐗堟湰鐨勬柇璦浜х敓闈炶嚧鍛藉け璐ワ紝鑰屼笉浼?xì)涓褰撳墠鍑芥暟銆傞氬父鏇存帹鑽愪嬌鐢‥XPECT_*鏂█錛屽洜涓哄畠浠繍琛屼竴涓祴璇曚腑鍙互鏈変笉姝竴涓殑閿欒琚姤鍛婂嚭鏉ャ備絾濡傛灉鍦ㄧ紪鍐欐柇璦濡傛灉澶辮觸錛屽氨娌℃湁蹇呰緇х畫寰涓嬫墽琛岀殑嫻嬭瘯鏃訛紝浣犲簲璇ヤ嬌鐢ˋSSERT_*鏂█銆?

 

鍥犱負(fù)澶辮觸鐨凙SSERT_*鏂█浼?xì)绔嬪堉M粠褰撳墠鐨勫嚱鏁拌繑鍥烇紝鍙兘浼?xì)锜q囧叾鍚庣殑涓浜涚殑娓呮磥浠g爜錛岃繖鏍蜂篃璁鎬細(xì)瀵艱嚧絀洪棿娉勬紡銆傛牴鎹硠婕忔湰韜殑鐗硅川錛岃繖縐嶆儏鍐? 涔熻鍊煎緱淇錛屼篃鍙兘涓嶅煎緱鎴戜滑鍏沖績鈥斺旀墍浠ワ紝濡傛灉浣犲緱鍒版柇璦閿欒鐨勫悓鏃訛紝榪樺緱鍒頒簡涓涓爢媯鏌ョ殑閿欒錛岃浣忎笂闈㈡垜浠墍璇寸殑榪欎竴鐐廣?

 

瑕佹彁渚涗竴涓嚜瀹氫箟鐨勯敊璇秷鎭紝鍙渶瑕佷嬌鐢?lt;<鎿嶄綔絎︼紝鎴栦竴涓?lt;<鎿嶄綔絎︾殑搴忓垪錛屽皢鍏惰緭鍏ュ埌妗嗘灦瀹氫箟鐨勫畯涓備笅闈㈡槸涓涓緥瀛愶細(xì)

 

 
  1. ASSERT_EQ(x.size(), y.size()) << "Vectors x and y are of unequal length";  
  2. for (int i = 0; i < x.size(); ++i) {  
  3.   EXPECT_EQ(x[i], y[i]) << "Vectors x and y differ at index " << i;  
  4. }  
 

浠諱綍鑳藉琚緭鍑哄埌ostream涓殑淇℃伅閮藉彲浠ヨ杈撳嚭鍒頒竴涓柇璦瀹忎腑鈥斺旂壒鍒槸C瀛楃涓插拰string瀵硅薄銆傚鏋滀竴涓瀛楃涓? 錛坵char_t*錛寃indows涓奤NICODE妯″紡TCHAR*鎴杝td::wstring錛夎杈撳嚭鍒頒竴涓柇璦涓紝鍦ㄦ墦鍗版椂瀹冧細(xì)琚漿鎹㈡垚UTF-8 緙栫爜銆?

 

鍩烘湰鏂█

 

涓嬮潰榪欎簺鏂█瀹炵幇浜嗗熀鏈殑true/false鏉′歡嫻嬭瘯銆?

 

鑷村懡鏂█ 闈炶嚧鍛芥柇璦 楠岃瘉鏉′歡
ASSERT_TRUE(condition); EXPECT_TRUE(condition); condition涓虹湡
ASSERT_FALSE(condition); EXPECT_FALSE(condition); condition 涓哄亣

 

璁頒綇錛屽綋瀹冧滑澶辮觸鏃訛紝ASSERT_*浜х敓涓涓嚧鍛藉け璐ュ茍浠庡綋鍓嶅嚱鏁拌繑鍥烇紝鑰孍XCEPT_*浜х敓涓涓潪鑷村懡澶辮觸錛屽厑璁稿嚱鏁扮戶緇繍琛屻傚湪涓ょ鎯呭喌涓嬶紝涓涓柇璦澶辮觸閮芥剰鍛崇潃瀹冩墍鍖呭惈鐨勬祴璇曞け璐ャ?

 

鏈夋晥騫沖彴錛歀inux銆乄indows銆丮ac銆?

 

浜岃繘鍒舵瘮杈?/strong>

 

鏈妭鎻忚堪浜嗘瘮杈冧袱涓肩殑涓浜涙柇璦銆?

 

鑷村懡鏂█ 闈炶嚧鍛芥柇璦 楠岃瘉鏉′歡
ASSERT_EQ(expected, actual); EXPECT_EQ(expected, actual); expected == actual
ASSERT_NE(val1, val2); EXPECT_NE(val1, val2); val1 != val2
ASSERT_LT(val1, val2); EXPECT_LT(val1, val2); val1 < val2
ASSERT_LE(val1, val2); EXPECT_LE(val1, val2); val1 <= val2
ASSERT_GT(val1, val2); EXPECT_GT(val1, val2); val1 > val2
ASSERT_GE(val1, val2); EXPECT_GE(val1, val2); val1 >= val2

 

鍦ㄥ嚭鐜板け璐ヤ簨浠舵椂錛?span class="hilite1">Google Test浼?xì)灏嗕袱涓鹼紙Val1鍜?em>Val2錛夐兘鎵撳嵃鍑烘潵銆傚湪ASSERT_EQ*鍜孍XCEPT_EQ*鏂█錛堜互鍙?qiáng)鎴戜滑闅忓悗浠嬀l嶇被浼肩殑鏂█錛変腑錛屼綘搴旇鎶婁綘甯屾湜嫻嬭瘯鐨勮〃杈懼紡鏀懼湪actual錛堝疄闄呭鹼級鐨勪綅緗笂錛屽皢鍏舵湡鏈涘兼斁鍦?em>expected錛堟湡鏈涘鹼級鐨勪綅緗笂錛屽洜涓?span class="hilite1">Google Test鐨勬祴璇曟秷鎭負(fù)榪欑鎯緥鍋氫簡涓浜涗紭鍖栥?

 

鍙傛暟鍊煎繀欏繪槸鍙氳繃鏂█鐨勬瘮杈冩搷浣滅榪涜姣旇緝鐨勶紝鍚﹀垯浣犱細(xì)寰楀埌涓涓紪璇戦敊璇傚弬鏁板艱繕蹇呴』鏀寔<<鎿嶄綔絎︽潵灝嗗艱緭鍏ュ埌ostream涓傛墍鏈夌殑C++鍐呯疆綾誨瀷閮芥敮鎸佽繖涓鐐廣?

 

榪欎簺鏂█鍙互鐢ㄤ簬鐢ㄦ埛鑷畾涔夌殑鍨嬪埆錛屼絾浣犲繀欏婚噸杞界浉搴旂殑姣旇緝鎿嶄綔絎︼紙濡?=銆?lt;絳夛級銆傚鏋滃畾涔夋湁鐩稿簲鐨勬搷浣滅錛屾帹鑽愪嬌鐢ˋSSERT_*()瀹忥紝鍥犱負(fù)瀹冧滑涓嶄粎浼?xì)杈撳嚭姣旇緝鐨劸l撴灉錛岃繕浼?xì)杈撳囖Z袱涓瘮杈冨璞°?

 

鍙傛暟琛ㄨ揪寮忔繪槸鍙瑙f瀽涓嬈°傚洜姝わ紝鍙傛暟琛ㄨ揪寮忔湁涓瀹氱殑鍓綔鐢紙side effect錛岃繖閲屽簲璇ユ槸鎸囩紪璇戝櫒涓嶅悓錛屾搷浣滅瑙f瀽欏哄簭鐨勪笉紜畾鎬э級涔熸槸鍙互鎺ュ彈鐨勩備絾鏄紝鍚屽叾浠栨櫘閫欳/C++鍑芥暟涓鏍鳳紝鍙傛暟琛ㄨ揪寮忕殑瑙f瀽欏哄簭鏄笉紜畾鐨勶紙濡傦紝涓縐嶇紪璇戝櫒鍙互鑷敱閫夋嫨涓縐嶉『搴忔潵榪涜瑙f瀽錛夛紝鑰屼綘鐨勪唬鐮佷笉搴旇渚濊禆浜庢煇縐嶇壒瀹氱殑鍙傛暟瑙f瀽欏哄簭銆?

 

ASSERT_EQ()瀵規(guī)寚閽堣繘琛岀殑鏄寚閽堟瘮杈冦傚嵆錛屽鏋滆鐢ㄥ湪涓や釜C瀛楃涓蹭笂錛屽畠浼?xì)姣旇緝瀹冧滑鏄惁鎸囧悜鍚屾狅L(fēng)殑鍐呭瓨鍦板潃錛岃屼笉鏄畠浠墍鎸囧悜鐨勫瓧絎︿覆鏄惁鏈夌浉鍚屽箋傛墍浠ワ紝濡傛灉浣犳兂瀵逛袱涓狢瀛楃涓詫紙渚嬪錛宑onst char*錛夎繘琛屽兼瘮杈冿紝璇蜂嬌鐢ˋSSERT_STREQ()瀹忥紝璇ュ畯浼?xì)鍦ㄥ悗闈粙缁嶅埌銆傜壒鍒渶瑕佷竴鎻愮殑鏄紝瑕侀獙璇佷竴涓狢瀛楃涓叉槸鍚︿負(fù)絀猴紙NULL錛夛紝浣跨敤ASSERT_STREQ(NULL, c_string)銆備絾鏄姣旇緝涓や釜string瀵硅薄鏃訛紝浣犲簲璇ヤ嬌鐢ˋSSERT_EQ銆?

 

鏈妭涓粙緇嶇殑瀹忛兘鍙互澶勭悊紿勫瓧絎︿覆瀵硅薄鍜屽瀛楃涓插璞★紙string鍜寃string錛夈?

 

鏈夋晥騫沖彴錛歀inux銆乄indows銆丮ac銆?

 

瀛楃涓叉瘮杈?/strong>

 

璇ョ粍鏂█鐢ㄤ簬姣旇緝涓や釜C瀛楃涓層傚鏋滀綘鎯寵姣旇緝涓や釜string瀵硅薄錛岀浉搴斿湴浣跨敤EXPECT_EQ銆丒XPECT_NE絳夋柇璦銆?

 

鑷村懡鏂█ 闈炶嚧鍛芥柇璦 楠岃瘉鏉′歡
ASSERT_STREQ(expected_str, actual_str); EXPECT_STREQ(expected_str, actual_str); 涓や釜C瀛楃涓叉湁鐩稿悓鐨勫唴瀹?/td>
ASSERT_STRNE(str1, str2); EXPECT_STRNE(str1, str2); 涓や釜C瀛楃涓叉湁涓嶅悓鐨勫唴瀹?/td>
ASSERT_STRCASEEQ(expected_str, actual_str); EXPECT_STRCASEEQ(expected_str, actual_str); 涓や釜C瀛楃涓叉湁鐩稿悓鐨勫唴瀹癸紝蹇界暐澶у皬鍐?/td>
ASSERT_STRCASENE(str1, str2); EXPECT_STRCASENE(str1, str2); 涓や釜C瀛楃涓叉湁涓嶅悓鐨勫唴瀹癸紝蹇界暐澶у皬鍐?/td>

 

娉ㄦ剰鏂█鍚嶇О涓嚭鐜扮殑“CASE”鎰忓懗鐫澶у皬鍐欒蹇界暐浜嗐?

 

*STREQ*鍜?STRNE*涔熸帴鍙楀瀛楃涓詫紙wchar_t*錛夈傚鏋滀袱涓瀛楃涓叉瘮杈冨け璐ワ紝瀹冧滑鐨勫間細(xì)鍋氫負(fù)UTF-8紿勫瓧絎︿覆琚緭鍑恒?

 

涓涓狽ULL絀烘寚閽堝拰涓涓┖瀛楃涓蹭細(xì)琚涓烘槸涓嶄竴鏍?/em>鐨勩?

 

鏈夋晥騫沖彴錛歀inux銆乄indows銆丮ac銆?

 

鍙傝錛氭洿澶氱殑瀛楃涓叉瘮杈冪殑鎶宸э紙濡傚瓙瀛楃涓層佸墠緙鍜屾鍒欒〃杈懼紡鍖歸厤錛夛紝璇峰弬瑙乕Advanced Guide Advanced Google Test Guide]銆?

 

綆鍗曠殑嫻嬭瘯

 

瑕佸垱寤轟竴涓祴璇曪細(xì)

  1. 浣跨敤TEST錛堬級瀹忔潵瀹氫箟鍜屽懡鍚嶄竴涓祴璇曞嚱鏁幫紝瀹冧滑鏄竴浜涙病鏈夎繑鍥炲肩殑鏅欳++鍑芥暟銆?
  2. 鍦ㄨ繖涓嚱鏁頒腑錛屼笌浣犳兂瑕佸寘鍚殑鍏跺畠浠諱綍鏈夋晥C++浠g爜涓璧鳳紝浣跨敤Google Test鎻愪緵鐨勫悇縐嶆柇璦鏉ヨ繘琛屾鏌ャ?
  3. 嫻嬭瘯鐨勭粨鏋滅敱鍏朵腑鐨勬柇璦鍐沖畾錛涘鏋滄祴璇曚腑鐨勪換鎰忔柇璦澶辮觸錛堟棤璁烘槸鑷村懡榪樻槸闈炶嚧鍛斤級錛屾垨鑰呮祴璇曞穿婧冿紝閭d箞鏁翠釜嫻嬭瘯灝卞け璐ヤ簡銆傚惁鍒欙紝嫻嬭瘯閫氳繃銆?nbsp;
  1. TEST(test_case_name, test_name) {  
  2. ... test body ...  
  3. }  
 

TEST錛堬級鐨勫弬鏁版槸浠庢鎷埌鐗規(guī)畩鐨勩?em>絎竴涓?/em>鍙傛暟鏄祴璇曟渚嬬殑鍚嶇О錛?em>絎簩涓?/em>鍙傛暟鏄祴璇曟渚嬩腑鐨勬祴璇曠殑鍚嶇О銆傝浣忥紝涓涓祴璇曟渚嬪彲浠ュ寘鍚換鎰忔暟閲忕殑鐙珛嫻嬭瘯銆備竴涓祴璇曠殑鍏ㄧО鍖呮嫭浜嗗寘鍚畠鐨勬祴璇曟渚嬪悕縐幫紝鍙?qiáng)鍏剁嫭绔嬬殑鍚嵖U般備笉鍚屾祴璇曟渚嬩腑鐨勭嫭绔嬫祴璇曞彲浠ユ湁鐩稿悓鐨勫悕縐般?

 

涓句緥鏉ヨ錛岃鎴戜滑鐪嬩竴涓畝鍗曠殑鏁存暟鍑芥暟錛?

 

  1. int Factorial(int n); // 榪斿洖n鐨勯樁涔?/span>