锘??xml version="1.0" encoding="utf-8" standalone="yes"?>JLZZJLZZ亚洲乱熟无码,亚洲国产成人精品无码区在线网站,亚洲乱码中文字幕久久孕妇黑人http://m.tkk7.com/amenglai/category/43684.htmlzh-cnWed, 05 May 2010 13:58:22 GMTWed, 05 May 2010 13:58:22 GMT60Effecitive C++璇誨畬浜嗐?/title><link>http://m.tkk7.com/amenglai/articles/320109.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Wed, 05 May 2010 03:31:00 GMT</pubDate><guid>http://m.tkk7.com/amenglai/articles/320109.html</guid><wfw:comment>http://m.tkk7.com/amenglai/comments/320109.html</wfw:comment><comments>http://m.tkk7.com/amenglai/articles/320109.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/amenglai/comments/commentRss/320109.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/amenglai/services/trackbacks/320109.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt">浠婂ぉ緇堜簬鎶婅繖鏈功璇誨畬浜嗭紝娉涘瀷緙栫▼閮ㄥ垎鍥犱負鑷繁鐢ㄧ殑寰堝皯錛屾敹璐т笉澶э紝鍏跺畠閮ㄥ垎璇昏繃浠ュ悗錛岀殑紜彲浠ュ姞娣辯悊瑙o紝灝ゅ叾鏄鐓с奀++ Primer銆嬶紝鍦ㄧ悊瑙d笂浼氭湁寰堝ぇ鐨勮繘姝ャ?br /> 榪欐湰涔︼紝鎴戣鐨勬椂闂村緢闆剁錛屼竴鑸彧鏄棭涓婅錛屾櫄涓婂洖瀹跺洜涓鴻鍛煎摟鍛煎摟鐨勫啓鐐逛笢瑗匡紝瀹炲湪鏄病鏃墮棿璇伙紝鎵浠ヨ姳鐨勬椂闂存瘮杈冨銆?img src="/CuteSoft_Client/CuteEditor/images/face23.gif" align="absMiddle" border="0" alt="" />铏界劧寰堥浂紕庯紝浣嗘槸鏀惰揣寰堝ぇ錛屽ぇ姒傛槸鍥犱負浠庢潵娌$粰鑷繁璁劇疆浠諱綍鐨刣eadline錛屾病鏈夊帇鍔涳紝涔熷氨鍙互鎱㈡參鐨勮錛屾參鎱㈢殑鎬濊冦?br /> 鍙﹀鍥犱負榪欐湰涔︽洿鍔犲叧娉ㄧ殑鏄璦鐨勬湰韜紝鎵浠ヨ偗瀹氭病鏈夎PEAA涔嬪垪鐨勯偅涔堣垂鍔詫紝涔熷緢閫傚悎闆剁鐨勬椂闂存潵闃呰銆?br /> 鍝庯紝鎴戝啓浜嗚繖涔堝騫碕ava閮芥病璇昏繃Effecitive java銆傛渶鍚庡啀鎰熸叏涓涓嬪惂銆?br /> 鏄庡ぉ錛屾垜浼氬洖鍒版垜鍠滄鐨刯ava錛屽幓璇匯婅璁℃ā寮忕簿瑙c嬨?br /> 渚濈劧鏄棭涓婇槄璇伙紝甯屾湜榪欐鐨勯槄璇伙紝鑳藉瀵規垜鐩墠鐨勪唬鐮侀噸鏋勬湁鍗蟲椂鐨勫府鍔┿?/span> <img src ="http://m.tkk7.com/amenglai/aggbug/320109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/amenglai/" target="_blank">amenglai</a> 2010-05-05 11:31 <a href="http://m.tkk7.com/amenglai/articles/320109.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Effecitive C++璇諱功絎旇 Chapter4 璁捐涓庡0鏄?/title><link>http://m.tkk7.com/amenglai/articles/316139.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Mon, 22 Mar 2010 03:28:00 GMT</pubDate><guid>http://m.tkk7.com/amenglai/articles/316139.html</guid><wfw:comment>http://m.tkk7.com/amenglai/comments/316139.html</wfw:comment><comments>http://m.tkk7.com/amenglai/articles/316139.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/amenglai/comments/commentRss/316139.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/amenglai/services/trackbacks/316139.html</trackback:ping><description><![CDATA[  <h1>Item18 Make interfaces easy to use correctly and hard to use incorrectly.<span style="font-family: 瀹嬩綋">璁╂帴鍙e鏄撹姝g‘浣跨敤錛屼笉鏄撹璇敤</span></h1> <h1><span style="font-weight: normal; font-size: 11pt; font-family: 瀹嬩綋">濂界殑鎺ュ彛璁捐搴旇鏄棦瀹規槗琚紜嬌鐢紝鍙堜笉鏄撹璇敤銆?/span></h1> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">灝變緥濡備功涓殑</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Sample</span><span style="font-size: 11pt">錛屽叧浜庢椂闂寸殑錛屾垜浠竴鑸殑鍋氭硶灝辨槸鍦ㄥ垱寤?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Day</span><span style="font-size: 11pt">瀵硅薄鏃訛紝榪藉姞鏍¢獙鍑芥暟鏉ュ垽鏂勾鏈堟棩鏄笉鏄湁鏁堛?/span></p> <h3><span style="font-family: 瀹嬩綋">寤鴻鐨勫仛娉曚竴鏄細鍒涘緩鏂扮殑綾誨瀷</span></h3> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">瀹氫箟錛?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">class Month {</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">public:</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">   static Month Jan() {return Month(1); }</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">   static Month feb() {return Month(2); }</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">…</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">private Month(int m);</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">};</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Date d(Month::Mar(), Day(30), Year(1995) );</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">涓哄暐涓嶇洿鎺ヤ嬌鐢ㄩ潤鎬佸彉閲忥紵</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鍙傝?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Item4 P30</span><span style="font-size: 11pt">錛岀畝鍗曡灝辨槸涓嶈兘淇濊瘉鍦ㄤ嬌鐢?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">non-local static objects</span><span style="font-size: 11pt">鏃訛紝榪欎釜瀵硅薄灝卞凡緇忓垵濮嬪寲浜嗐傚鏋?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">non-local static objects</span><span style="font-size: 11pt">鍦ㄥ彟涓涓枃浠朵簡錛屽張鎭板閥娌℃湁鍒濆鍖栵紝緋葷粺褰撶劧灝變細緲樿精瀛愪簡銆?/span></p> <h3><span style="font-family: 瀹嬩綋">鍙︿竴縐嶆柟娉曪細鍔犱笂</span>const<span style="font-family: 瀹嬩綋">鏉ラ檺鍒?/span>type<span style="font-family: 瀹嬩綋">鍙互鍋氱殑浜嬫儏銆?/span></h3> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鍏堝弬鑰?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Item3 P19</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">class Rational { </span><span style="font-size: 11pt">…</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">};</span></p> <p style="margin-bottom: 0pt"><strong><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">const</span></strong><span style="font-size: 11pt; font-family: 'Arial','sans-serif'"> Rational operator*(const Rational &lhs, const Rational &rhs);</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">涔嬫墍浠ュ己鍒惰緗負</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">const</span><span style="font-size: 11pt">灝辨槸涓轟簡閬垮厤</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">client</span><span style="font-size: 11pt">鍦ㄤ嬌鐢ㄦ椂鍑洪敊銆傚洜涓哄鏋滄病鏈?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">clien</span><span style="font-size: 11pt">錛岄偅涔堬細</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Rational a,b,c;</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">…</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">(a*b)=c</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">榪欑鍐欐硶鏄鐨勶紝浣嗘槸濡傛灉</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">a</span><span style="font-size: 11pt">錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">b</span><span style="font-size: 11pt">鏄唴緗被鍨嬶紝榪欑鍐欐硶灝辨槸閿欒鐨勩?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; color: red">闄ら潪鏈夊繀瑕侊紝鍚﹀垯灝辮淇濊瘉浣犵殑綾誨瀷</span><span style="font-size: 11pt; color: red; font-family: 'Arial','sans-serif'">type</span><span style="font-size: 11pt; color: red">鐨勮涓哄拰鍐呯疆綾誨瀷涓鑷淬?/span></p> <h3><span style="font-family: 瀹嬩綋">涓鑷存у鑷存帴鍙e鏄撹姝g‘浣跨敤銆?/span></h3> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">STL</span><span style="font-size: 11pt">鏄鏍鳳紝</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">java</span><span style="font-size: 11pt">鍦ㄨ繖閲屾垚浜嗗弽闈㈡暀鏉愶紝鍥犱負濡傛灉鎯崇煡閬撳鍣ㄥ唴瀵硅薄鐨勬暟閲忥紝鐢?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Array</span><span style="font-size: 11pt">錛岃璁塊棶灞炴?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">length</span><span style="font-size: 11pt">錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">String</span><span style="font-size: 11pt">瑕佺敤</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">length</span><span style="font-size: 11pt">鍑芥暟錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">ArrayList</span><span style="font-size: 11pt">瑕佺敤</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">size</span><span style="font-size: 11pt">鍑芥暟錛岃繖灝辨槸涓嶄竴鑷存с?/span></p> <h3><span style="font-family: 瀹嬩綋">浣跨敤</span>std::tr1::shared_ptr<span style="font-family: 瀹嬩綋">錛屾秷闄?/span>client<span style="font-family: 瀹嬩綋">瀵硅祫婧愮鐞嗙殑璐d換</span></h3> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鎵懼嚭浠ヤ笅鍐欐硶鐨勪袱涓槗閿欑殑鍦版柟錛?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Investment* createInvestment();</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">1 </span><span style="font-size: 11pt">蹇樿鍒犻櫎</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">createInvestment()</span><span style="font-size: 11pt">榪斿洖鐨勬寚閽?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">2 </span><span style="font-size: 11pt">鍒犻櫎榪欎釜鎸囬拡澶氭</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">so</span><span style="font-size: 11pt">錛屼慨鏀瑰畾涔夛細</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">std::tr1::shared_ptr< Investment > createInvestment();</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">濡傛灉鍑虹幇榪欑鎯呭艦錛氫粠</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">createInvestment</span><span style="font-size: 11pt">寰楀埌</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Investment*</span><span style="font-size: 11pt">鐨勫嚱鏁拌鎶婅繖涓寚閽堜紶閫掍釜緇欏彨鍋?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">getRidOfInvestment</span><span style="font-size: 11pt">錛岀敱</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">getridOfInvestment</span><span style="font-size: 11pt">鍙栦唬浣跨敤</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">delete</span><span style="font-size: 11pt">銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">榪欓噷灝卞嚭鐜頒簡涓涓柊鐨?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">client</span><span style="font-size: 11pt">鏄撻敊鐨勭偣錛岀敤鎴鋒垨璁鎬細浣跨敤閿欑殑璧勬簮閲婃斁鏈哄埗銆傚洜涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">delete</span><span style="font-size: 11pt">琚?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">getRidOfInvestment</span><span style="font-size: 11pt">鍙栦唬浜嗐?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">std::tr1::shared_ptr< Investment > </span></p> <p style="margin: 0cm 0cm 0pt 21.3pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">pInv(static_cast<Investment*>(0), getRidOfInvestment);</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">閭d箞瀹氫箟灝卞簲璇ユ槸榪欐牱鐨勶細</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">std::tr1::shared_ptr< Investment > createInvestment()</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">{</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">   std::tr1::shared_ptr< Investment > </span></p> <p style="margin: 0cm 0cm 0pt 21.3pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">retVal(static_cast<Investment*>(0), getRidOfInvestment); <span style="color: red">//</span></span><span style="font-size: 11pt; color: red">榪欎笉鑳借</span><span style="font-size: 11pt; color: red; font-family: 'Arial','sans-serif'">client</span><span style="font-size: 11pt; color: red">鏉ュ仛</span></p> <p style="margin: 0cm 0cm 0pt 7.1pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">retVal = </span><span style="font-size: 11pt">…</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">;</span></p> <p style="margin: 0cm 0cm 0pt 7.1pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">return retVal;</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">}</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">tr1::shared_ptr</span><span style="font-size: 11pt">鐨勪紭鐐規槸鍏佽鍦ㄤ竴涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">DLL</span><span style="font-size: 11pt">鍒涘緩瀵硅薄錛屽湪鍙︿竴涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">DLL</span><span style="font-size: 11pt">閲屽垹闄ゅ璞°?/span></p> <h2><span style="font-family: 鏂板畫浣?>鐗㈣</span></h2> <ul style="margin-top: 0cm" type="disc"> <li style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Good interfaces are easy to use correctly and hard to use in correctly.</span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">鎺ュ彛涓鑷存э紝浜庡唴緗暟鎹被鍨嬬殑琛屼負鍏煎</span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">闃繪閿欒鐨勬柟寮忚繕鍖呮嫭鍒涘緩鏂扮殑綾誨瀷錛堜緥濡?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Month</span><span style="font-size: 11pt">錛夛紝闄愬埗綾誨瀷涓婄殑鎿嶄綔錛屾潫緙氬璞″鹼紝浠ュ強娑堥櫎瀹㈡埛鐨勮祫婧愮鐞嗙殑璐d換</span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">tr1::shared_ptr</span><span style="font-size: 11pt">鏀寔瀹氬埗綾誨瀷鐨勫垹闄ゅ櫒</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">deleter</span><span style="font-size: 11pt">錛屽厑璁稿湪涓涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">DLL</span><span style="font-size: 11pt">鍒涘緩瀵硅薄錛屽湪鍙︿竴涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">DLL</span><span style="font-size: 11pt">閲屽垹闄ゅ璞°?/span></li> </ul> <h1>Item19<span style="font-family: 瀹嬩綋">錛?/span>Treat class design as type design.<span style="font-family: 瀹嬩綋">璁捐</span>class<span style="font-family: 瀹嬩綋">鐘瑰璁捐</span>type </h1> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鍦ㄨ璁′竴涓被鐨勬椂鍊欙紝瑕佸洖絳斾竴緋誨垪鐨勯棶棰樺摝銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鍙傝冨ぇ甯堝湪</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">P85-P86</span><span style="font-size: 11pt">涔嬮棿緇欏嚭鐨勫父甯哥殑娓呭崟鍚э紝鍏跺疄瀹為檯涓婏紝鎴戝湪璁捐綾葷殑鏃跺欑殑紜病鏈夋兂榪囪繖涔堝錛岄棶榪囪嚜宸辮繖涔堢殑涓轟粈涔堬紝鎵浠ヨ繖涔熸槸鎴戞繪槸鍦ㄨ拷姹備唬鐮侀噸鐢紝鍗存繪槸鍙戠幇鑷繁鍐欑殑浠g爜閲嶇敤搴﹀緢浣庣殑涓涓師鍥犳妸銆?/span></p> <h1>Item20<span style="font-family: 瀹嬩綋">錛?/span>Prefer pass-by-reference-to-const to pass-by-value.<span style="font-family: 瀹嬩綋">瀹佷互</span>pass-by-reference-to-const<span style="font-family: 瀹嬩綋">鏇挎崲</span>pass-by-value </h1> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; color: #993300; font-family: 'Arial','sans-serif'">But</span><span style="font-size: 11pt; color: #993300">鍏堝涔犱竴涓崟璇嶏紝</span><span style="font-size: 11pt; color: #993300; font-family: 'Arial','sans-serif'">characteristic</span><span style="font-size: 11pt; color: #993300">錛?/span><span style="font-size: 11pt; color: #993300; font-family: 'Arial','sans-serif'">KAO</span><span style="font-size: 11pt; color: #993300">錛岃繖绔熺劧鏄釜鍚嶈瘝銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; color: #993300">鍐嶅涓涓湴閬撶殑璇存硶錛氳В鍐抽棶棰樼殑鏂規硶錛?/span><u><span style="font-size: 11pt; color: #993300; font-family: 'Arial','sans-serif'">The way around the slicing problem is…</span></u></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鍑芥暟閮芥槸鍊間紶閫掋?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">pass by-value</span><span style="font-size: 11pt">銆?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">function parameters are initialized with copies of the actual arguments, and function callers goes back a copy of the value returned by the function.</span><span style="font-size: 11pt">榪欐牱褰撶劧寮閿灝卞ぇ浜嗭紝姣忔閮藉厛</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">copy</span><span style="font-size: 11pt">涓浠借繘鏉ワ紝瀹屼簨浠ュ悗錛屽啀</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">copy</span><span style="font-size: 11pt">涓浠藉嚭鍘匯?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鍋囪鍑芥暟鐨勫弬鏁版槸涓涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Student</span><span style="font-size: 11pt">瀵硅薄錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">bool validateStudent(Student s);</span><span style="font-size: 11pt">璋冪敤榪欎釜鍑芥暟錛?u><span style="color: blue">棰濆鐨勯殣鎬у紑閿鍖呮嫭瑕佸厛璋冪敤</span></u></span><u><span style="font-size: 11pt; color: blue; font-family: 'Arial','sans-serif'">copy constructor</span></u><u><span style="font-size: 11pt; color: blue">鍒涘緩涓涓?/span></u><u><span style="font-size: 11pt; color: blue; font-family: 'Arial','sans-serif'">Student</span></u><u><span style="font-size: 11pt; color: blue">瀵硅薄鐢ㄤ簬鍑芥暟鍐呴儴錛屽嚱鏁版墽琛岀粨鏉熷啀璋冪敤鏋愭瀯鍑芥暟閲婃斁榪欎釜瀵硅薄銆?/span></u></p> <h3><span style="font-family: 瀹嬩綋">寮閿澶ぇ浜嗭紝鏀硅繘涓涓嬶細</span>pass by reference-to-const</h3> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">bool validateStudent(<strong>const</strong> Student<strong>&</strong> s);</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; color: red">寮曠敤鏄氳繃鎸囬拡鏉ュ疄鐜板疄鐜扮殑錛屽洜姝や紶閫掑紩鐢ㄥ疄闄呬笂灝辨槸鍦ㄤ紶閫掓寚閽堛?/span><span style="font-size: 11pt; color: red; font-family: 'Arial','sans-serif'">references are typically implemented as pointers.</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">浣嗘槸榪欎釜瑙勫垯瀵逛簬鍐呯疆鏁版嵁綾誨瀷涓嶉傜敤錛屼篃涓嶆槸閫傜敤</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">STL iterator</span><span style="font-size: 11pt">鍜屽嚱鏁板璞?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">function objects</span><span style="font-size: 11pt">銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鍗充嬌鍐嶅皬鐨勫璞′篃搴旇涓嶈浣跨敤鍊間紶閫掞紝鑰屾槸瑕佷嬌鐢?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">pass by reference-to-const</span><span style="font-size: 11pt">銆?/span></p> <h3><span style="font-family: 瀹嬩綋">鍏充簬</span>slicing problem<span style="font-family: 瀹嬩綋">鐨勫彟涓縐嶆弿榪?/span></h3> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">slicing problem</span><span style="font-size: 11pt">鏄湪澶氭佽鍒欓噷闈㈠鏄撲駭鐢熺殑銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鐪嬩竴涓畝鍗曠殑鍩虹被銆佹淳鐢熺被鐨勫畾涔?/span></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">class Window </span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">{</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">public:</span></em></p> <p style="margin: 0cm 0cm 0pt 7.1pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">int height;</span></em></p> <p style="margin: 0cm 0cm 0pt 7.1pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">int width;</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">};</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">class TextWindow : public Window</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">{</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">public:</span></em></p> <p style="margin: 0cm 0cm 0pt 7.1pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">int cursorLocation;</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">};</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0">…</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">Window win;</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">TextWindow *tWinPtr;</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">tWinPtr = new TextWindow;</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">win = *tWinprt;</span></em></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">win</span><span style="font-size: 11pt">鏄竴涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Window</span><span style="font-size: 11pt">瀵硅薄錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">C++</span><span style="font-size: 11pt">瑙勫畾錛氱粰</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">win</span><span style="font-size: 11pt">鍒嗛厤鐨勫唴瀛樼湅瑙佺殑澶у皬錛岀敱鍏墮潤鎬佺被鍨嬪喅瀹氥傚氨鏄榛樿鐨勬嫹璐濆嚱鏁板鑷翠俊鎭細鍑虹幇涓㈠け銆傝繖灝辨槸</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">slicing problem</span><span style="font-size: 11pt">銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">璇曟兂涓涓嬭繖瑕佹槸閫氳繃鍊間紶閫掔殑鏂瑰紡浼犻掑弬鏁幫紝瀹炲弬涓</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">copy</span><span style="font-size: 11pt">灝卞凡緇忎涪澶變俊鎭簡銆?/span></p> <h2><span style="font-family: 鏂板畫浣?>鐗㈣</span></h2> <ul style="margin-top: 0cm" type="disc"> <li style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Prefer pass-by-reference-to-const over pass-by-value.</span><span style="font-size: 11pt">榪欐牱鏃㈡湁鏁堬紝鍙堝彲浠ラ伩鍏?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">slicing problem</span><span style="font-size: 11pt">銆?/span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">浣嗘槸榪欎釜瑙勫垯瀵逛簬鍐呯疆鏁版嵁綾誨瀷錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">STL iterator</span><span style="font-size: 11pt">鍜屽嚱鏁板璞?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">function objects</span><span style="font-size: 11pt">涓嶉傜敤銆傚浜庡畠浠紶閫掑煎氨濂戒簡銆?/span></li> </ul> <h1>Item 21<span style="font-family: 瀹嬩綋">錛?/span>Don't try to return a reference when you must return an object.<span style="font-family: 瀹嬩綋">蹇呴』榪斿洖瀵硅薄鏃訛紝鍒鎯寵繑鍥炲叾</span>reference </h1> <h2>heap and stack</h2> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鍫嗗拰鏍堣繖鏄?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">2</span><span style="font-size: 11pt">涓笉鍚岀殑姒傚康錛屽搸鍝燂紝鎴戜竴鐩翠互涓烘槸涓涓瘝銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">heap</span><span style="font-size: 11pt">錛氬爢</span></p> <ul style="margin-top: 0cm" type="disc"> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">鏍堟槸緋葷粺鎻愪緵鐨勫姛鑳斤紝鐗圭偣鏄揩閫熼珮鏁堬紝緙虹偣鏄湁闄愬埗錛屾暟鎹笉鐏墊椿錛?/span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">鍫嗘槸鍑芥暟搴撳唴閮ㄦ暟鎹粨鏋勶紝涓嶄竴瀹氬敮涓銆?/span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">鍫嗙┖闂寸殑鍒嗛厤鎬繪槸鍔ㄦ佺殑錛岃櫧鐒剁▼搴忕粨鏉熸椂鎵鏈夌殑鏁版嵁絀洪棿閮戒細琚噴鏀懼洖緋葷粺錛屼絾鏄簿紜殑鐢寵鍐呭瓨</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">/</span><span style="font-size: 11pt">閲婃斁鍐呭瓨鍖歸厤鏄壇濂界▼搴忕殑鍩烘湰瑕佺礌銆?/span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">浣跨敤</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">new</span><span style="font-size: 11pt">鍒涘緩鐨勫璞℃槸鍦?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">heap</span><span style="font-size: 11pt">涓婂垎閰嶅唴瀛樼┖闂淬?/span></li> </ul> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">stack</span><span style="font-size: 11pt">錛氭爤</span></p> <ul style="margin-top: 0cm" type="disc"> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">鑰屽爢鏄嚱鏁板簱鎻愪緵鐨勫姛鑳斤紝鐗圭偣鏄伒媧繪柟渚匡紝鏁版嵁閫傚簲闈㈠箍娉涳紝浣嗘槸鏁堢巼鏈変竴瀹氶檷浣庛?/span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">鏍堟槸緋葷粺鏁版嵁緇撴瀯錛屽浜庤繘紼?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">/</span><span style="font-size: 11pt">綰跨▼鏄敮涓鐨勶紱涓嶅悓鍫嗗垎閰嶇殑鍐呭瓨鏃犳硶浜掔浉鎿嶄綔銆?/span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">鏍堢┖闂村垎闈欐佸垎閰嶅拰鍔ㄦ佸垎閰嶄袱縐嶃傞潤鎬佸垎閰嶆槸緙栬瘧鍣ㄥ畬鎴愮殑錛屾瘮濡傝嚜鍔ㄥ彉閲?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">(auto)</span><span style="font-size: 11pt">鐨勫垎閰嶃傚姩鎬佸垎閰嶇敱</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">alloca</span><span style="font-size: 11pt">鍑芥暟瀹屾垚銆傛爤鐨勫姩鎬佸垎閰嶆棤闇閲婃斁</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">(</span><span style="font-size: 11pt">鏄嚜鍔ㄧ殑</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">)</span><span style="font-size: 11pt">錛屼篃灝辨病鏈夐噴鏀懼嚱鏁般備負鍙Щ妞嶇殑紼嬪簭璧瘋錛?u>鏍堢殑鍔ㄦ佸垎閰嶆搷浣滄槸涓嶈榧撳姳鐨勶紒</u></span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">瀹氫箟鐨勫眬閮ㄥ彉閲忔槸鍦?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">stack</span><span style="font-size: 11pt">涓婂垎閰嶅唴瀛樼┖闂寸殑銆?/span></li> </ul> <h2><span style="font-family: 鏂板畫浣?>鐗㈣</span></h2> <ul style="margin-top: 0cm" type="disc"> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">綆鍗曚竴鍙ヨ瘽灝辨槸蹇呴』瑕佽繑鍥炲璞°?/span></li> </ul> <h1>Item22<span style="font-family: 瀹嬩綋">錛?/span>Declare data members private.<span style="font-family: 瀹嬩綋">灝嗘垚鍛樺彉閲忓0鏄庝負</span>private </h1> <h2>why data members shouldn’t be public?</h2> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">argument</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">(against) </span><span style="font-size: 11pt">浜夎錛屾剰瑙?/span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt">瀹炲弬</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt">褰㈠弬鏄?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">parameters</span></p> <h2>protected data member is mot more encapsulated than public one.</h2> <h2><span style="font-family: 鏂板畫浣?>鐗㈣</span></h2> <ul style="margin-top: 0cm" type="disc"> <li style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">data member</span><span style="font-size: 11pt">涓瀹氳灝佽銆?/span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">protected</span><span style="font-size: 11pt">涓嶅繀</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">public</span><span style="font-size: 11pt">鏈夋洿濂界殑灝佽銆?/span></li> </ul> <h1>Item 23<span style="font-family: 瀹嬩綋">錛?/span>Prefer non-member non-friend functions to member functions.<span style="font-family: 瀹嬩綋">瀹佷互</span>non-member<span style="font-family: 瀹嬩綋">銆?/span>non-friend<span style="font-family: 瀹嬩綋">鏇挎崲</span>member<span style="font-family: 瀹嬩綋">鍑芥暟</span></h1> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">榪欐槸涓涓吀鍨嬬殑渚嬪瓙錛?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">class WebBrowser {</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">public:</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">…</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">void clearCache();</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">void clearHistory();</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">void removeCookies();</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">…</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">};</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">涓轟簡鎻愪緵涓涓墽琛屾墍鏈夋搷浣滅殑鍑芥暟錛屾墍浠ュ氨鍦?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">WebBrowser</span><span style="font-size: 11pt">閲岄潰榪藉姞瀹氫箟錛?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">void clearEverything();</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鍝庯紝鎴戜竴鐩村氨鏄繖涔堝啓鐨勶紝騫惰嚜浠ヤ負鏈夊緢濂界殑灝佽錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">But</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">void clearBrowser(WebBrowser wb) </span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">{</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">wb.clearCache();</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">wb.clearHistory();</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">wb.removeCookies();</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">}</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">絎竴錛氬墠鑰呭茍涓嶆瘮鍚庤呮湁寰堝ソ鐨勫皝瑁?/span></p> <p style="margin: 0cm 0cm 0pt 21.3pt"><span style="font-size: 11pt">榪欏氨瑕佽В閲婁竴涓嬩粈涔堝彨鍋?#8220;灝佽”錛熶互鍙婂皝瑁呯殑鍒ゅ埆鏍囧噯銆?/span></p> <p style="margin: 0cm 0cm 0pt 21.3pt"><span style="font-size: 11pt">灝佽鐨勫垽鍒爣鍑嗭細鍙互閫氳繃緇熻鑳藉璁塊棶榪欎釜</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">data</span><span style="font-size: 11pt">鐨勫嚱鏁扮殑鏁扮洰鏉ヨ綆楋紝鍑芥暟瓚婂錛岃繖涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">data</span><span style="font-size: 11pt">灝佽涔熷氨鏈堜笉濂斤紝鍥犳鍓嶄竴縐嶅啓娉曠殑灝佽灝辨病鏈夊悗鑰呭ソ銆傝繖涔熷彲浠ョ敤鏉ヨВ閲?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Item22</span><span style="font-size: 11pt">閲岄潰錛屼負浠涔堣姹傛暟鎹垚鍛樹笉鑳藉畾涔変負</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">public</span><span style="font-size: 11pt">銆傚彟澶栧鍔?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">clearEverything()</span><span style="font-size: 11pt">浣滀負</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">member function</span><span style="font-size: 11pt">錛屽疄闄呬笂鏄檷浣庝簡灝佽鎬с傝屽悗闈㈢殑</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">non-member non-friend functions</span><span style="font-size: 11pt">鐨勫畾涔夊氨娌℃湁鏀瑰彉</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">WebBrowser</span><span style="font-size: 11pt">鐨勫皝瑁呮с?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">絎簩錛氬悗鑰呰繕鑳芥彁渚涙洿鍔犵伒媧葷殑鎵撳寘</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">package</span><span style="font-size: 11pt">錛屽鍔犳墿灞曟с?/span></p> <p style="margin: 0cm 0cm 0pt 21.3pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">put all convenience functions in multiple header files, but one namespace.</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">絎笁錛氬鍔犲嚱鏁扮殑鍙墿灞曟с?/span></p> <p style="margin: 0cm 0cm 0pt 21.3pt"><span style="font-size: 11pt">浣犲彲浠ュ畾涔夎嚜宸辯殑</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">convenience functions</span><span style="font-size: 11pt">錛屽啓鍒頒竴涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">header file</span><span style="font-size: 11pt">閲岄潰錛屾斁鍒板悓涓涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">namespace</span><span style="font-size: 11pt">閲岄潰銆傝繖鏄?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">member function</span><span style="font-size: 11pt">鍋氫笉鍒扮殑銆?/span></p> <h2><span style="font-family: 鏂板畫浣?>鐗㈣</span></h2> <ul style="margin-top: 0cm" type="disc"> <li style="margin-bottom: 0pt"><span style="font-size: 11pt">浼樺厛浣跨敤</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">non-member non-friend</span><span style="font-size: 11pt">鍑芥暟鏉ユ浛鎹?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">member</span><span style="font-size: 11pt">鍑芥暟銆?/span></li> </ul> <h1>Item 24<span style="font-family: 瀹嬩綋">錛?/span>Declare non-member functions when type conversions should apply to all parameters.<span style="font-family: 瀹嬩綋">鑻ユ墍鏈夊弬鏁扮殕闇綾誨瀷杞崲錛岃涓烘閲囩敤</span>non-member<span style="font-family: 瀹嬩綋">鍑芥暟</span></h1> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鍘熷洜錛?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Parameters are eligible for implicit type conversion only if they are listed in the parameter list.</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">緇撹錛?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">make operator* a non-member function, thus allowing compilers to perform implicit type conversions on all arguments.</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">class Rational {</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">…</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">};</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">const Rational operatior*(const Rational& lhs, Rational& rhs) </span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">{</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">   return Rationan(lhs.numerator()*rhs.numerator(),</span></p> <p style="margin: 0cm 0cm 0pt 36pt; text-indent: 36pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">lhs.denominator()*rhs. denominator () );</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">}</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">涓涓鍖猴細</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">濡傛灉涓涓嚱鏁幫紝鍜屾煇涓被鐩稿叧錛岃屽張涓嶈兘瀹氫箟鎴?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">member</span><span style="font-size: 11pt">錛岄偅涔堣繖涓嚱鏁板氨涓瀹氳瀹氫箟鎴?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">friend</span><span style="font-size: 11pt">銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">涓婇潰榪欎釜渚嬪瓙灝辮鏄庤繖涓娉曞茍涓嶆紜傜湡鐖辯敓鍛斤紝鎱庣敤</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">friend functions</span><span style="font-size: 11pt">銆?/span></p> <h1>Item 25<span style="font-family: 瀹嬩綋">錛?/span>Consider support for a non-throwing swap.<span style="font-family: 瀹嬩綋">鑰冭檻鍐欏嚭涓涓笉鎶涘紓甯哥殑</span>swap<span style="font-family: 瀹嬩綋">鍑芥暟</span></h1> <ol style="margin-top: 0cm" type="1"> <li style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">default swap</span></li> </ol> <p style="margin: 0cm 0cm 0pt 35.45pt"><span style="font-size: 11pt">灝辨槸鎸?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">std</span><span style="font-size: 11pt">閲岄潰瀹氫箟鐨?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">swap</span></p> <ol style="margin-top: 0cm" type="1" start="2"> <li style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">member swap</span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">nonmember swap</span></li> <li style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">specializations of std::swap</span></li> </ol> <h2>member swap</h2> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Widget</span><span style="font-size: 11pt">錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">:</span><span style="font-size: 11pt">鎴戜滑甯屾湜鐨勬槸浜ゆ崲鎸囬拡錛屼絾</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">swap</span><span style="font-size: 11pt">瀹為檯鍋氱殑鏄笉浠?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">copy</span><span style="font-size: 11pt">浜?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">3</span><span style="font-size: 11pt">涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Widget</span><span style="font-size: 11pt">瀵硅薄錛岃屼笖榪?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">copy</span><span style="font-size: 11pt">浜?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">3</span><span style="font-size: 11pt">涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">WidgetImpl</span><span style="font-size: 11pt">瀵硅薄銆傚お嫻垂浜嗭紒閮戒綆紕蟲椂浠d簡銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">class Widget{</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">void swap(Widget& other)</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">{</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">using std::swap;</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">swap(pImpl, other.pImpl;);</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">}</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">…</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">};</span></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">template<> void swap<Widget>( Widget& a, Widget&b)</span></em></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">{</span></em></p> <p style="margin-bottom: 0pt"><strong><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">   a.wap(b);</span></em></strong></p> <p style="margin-bottom: 0pt"><em><span style="font-size: 11pt; color: #0070c0; font-family: 'Arial','sans-serif'">}</span></em></p> <h2>nonmember swap</h2> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">鎺ヤ笅鏉ヨ璁ㄨ鐨勬槸濡傛灉</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">Widget</span><span style="font-size: 11pt">鍜?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">WidgetImpl</span><span style="font-size: 11pt">涓嶆槸綾昏屾槸綾繪ā鏉夸細鎬庝箞鏍鳳紵</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">綰︽潫鏉′歡錛氫笉鑳藉湪</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">std</span><span style="font-size: 11pt">閲岄潰澧炲姞鏂扮殑</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">template</span><span style="font-size: 11pt">錛屽彧鑳界壒鍖栵紙</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">specialize</span><span style="font-size: 11pt">錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">std</span><span style="font-size: 11pt">鍐呯殑</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">template</span><span style="font-size: 11pt">銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">濡傛灉闈炶瀹氫箟錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">say sorry</span><span style="font-size: 11pt">銆?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">behavior is undefined</span><span style="font-size: 11pt">銆?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">KAO</span><span style="font-size: 11pt">錛屽叾瀹炶繖姣斿紓甯歌繕璁ㄥ帉銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">瑙e喅鏂規硶鏄妸瀹冨畾涔夊埌涓涓嚜宸辯殑</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">namespace</span><span style="font-size: 11pt">閲岄潰錛岃屼笉瑕佸畾涔夊埌</span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">std</span><span style="font-size: 11pt">閲岄潰銆?/span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">namespace WidgetStuff {</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">…</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">template<typename T></span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">class Widget{…};</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">…</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">template<typename T></span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">void swap(Widget<T>& a, Widget<T>& b)</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">{</span></p> <p style="margin: 0cm 0cm 0pt 1cm"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">a.swap(b);</span></p> <p style="margin: 0cm 0cm 0pt 14.2pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">}</span></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">}</span></p> <h2>specializations of std::swap</h2> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">濡傛灉浠呬粎鏄拡瀵逛竴涓?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">class</span><span style="font-size: 11pt">錛岄偅灝辯壒鍖?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">std::swap</span><span style="font-size: 11pt">銆?/span></p> <p style="margin-bottom: 0pt"><u><span style="font-size: 11pt; color: #c00000; font-family: 'Arial','sans-serif'">If you want to have your class-specializing version of swap called in as many contexts as possible, you need to write both a non-member version in the same namespace as your class and a specialization of std::swap.</span></u></p> <p style="margin-bottom: 0pt"><span style="font-size: 11pt">榪欓儴鍒嗗崄鍒嗙粫錛?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">P111</span><span style="font-size: 11pt">榪樺浜?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">C++</span><span style="font-size: 11pt">鐨?/span><span style="font-size: 11pt; font-family: 'Arial','sans-serif'">name lookup</span><span style="font-size: 11pt">鐨勮鍒欒繘琛屼簡璇︾粏鐨勬弿榪般傚煎緱閲嶆柊娓╀範銆?/span></p> <img src ="http://m.tkk7.com/amenglai/aggbug/316139.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/amenglai/" target="_blank">amenglai</a> 2010-03-22 11:28 <a href="http://m.tkk7.com/amenglai/articles/316139.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Effecitive C++璇諱功絎旇 絎簲绔?瀹炵幇 Implementationshttp://m.tkk7.com/amenglai/articles/316135.htmlamenglaiamenglaiMon, 22 Mar 2010 03:19:00 GMThttp://m.tkk7.com/amenglai/articles/316135.htmlhttp://m.tkk7.com/amenglai/comments/316135.htmlhttp://m.tkk7.com/amenglai/articles/316135.html#Feedback0http://m.tkk7.com/amenglai/comments/commentRss/316135.htmlhttp://m.tkk7.com/amenglai/services/trackbacks/316135.html闃呰鍏ㄦ枃

amenglai 2010-03-22 11:19 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲欧洲无码AV电影在线观看| 青青青青青青久久久免费观看 | 99久久免费国产精品热| 国产一精品一aⅴ一免费| 亚洲日韩精品无码AV海量| 可以免费看黄视频的网站| 精品亚洲AV无码一区二区| 免费做爰猛烈吃奶摸视频在线观看 | 久久精品a一国产成人免费网站| 亚洲国产成人手机在线电影bd| 99精品一区二区免费视频| 亚洲成人福利网站| 亚洲人成网站免费播放| 亚洲爆乳无码专区www| 又粗又大又猛又爽免费视频 | 亚洲精品中文字幕| 97性无码区免费| 亚洲影视一区二区| 四虎影视大全免费入口| 亚洲高清乱码午夜电影网| 亚洲成av人片一区二区三区| 国产精品无码免费专区午夜| 亚洲乱色熟女一区二区三区丝袜| 野花香高清在线观看视频播放免费| 精品亚洲麻豆1区2区3区| 又粗又黄又猛又爽大片免费| 黄色a三级免费看| 亚洲αv久久久噜噜噜噜噜| 67194熟妇在线永久免费观看| 亚洲欧美成人综合久久久| 亚洲午夜精品一级在线播放放 | 亚洲人成网站18禁止| 亚洲国产一区视频| 99久热只有精品视频免费看| 亚洲精品自偷自拍无码| 亚洲精品午夜无码电影网| 亚洲自偷自偷精品| 色九月亚洲综合网| 亚洲精品二区国产综合野狼| 我的小后妈韩剧在线看免费高清版 | 性xxxxx免费视频播放|