锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美一区二区三区久久,久久夜色撩人精品国产,久久久久久国产精品无码下载 http://www.shnenglu.com/ioriiod0/zh-cnSat, 28 Jun 2025 12:26:51 GMTSat, 28 Jun 2025 12:26:51 GMT60C++ 鍗忕▼涓庣綉緇滅紪紼?/title><link>http://www.shnenglu.com/ioriiod0/archive/2013/01/01/196890.html</link><dc:creator>姹熸蹈鏈?/dc:creator><author>姹熸蹈鏈?/author><pubDate>Tue, 01 Jan 2013 05:14:00 GMT</pubDate><guid>http://www.shnenglu.com/ioriiod0/archive/2013/01/01/196890.html</guid><wfw:comment>http://www.shnenglu.com/ioriiod0/comments/196890.html</wfw:comment><comments>http://www.shnenglu.com/ioriiod0/archive/2013/01/01/196890.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.shnenglu.com/ioriiod0/comments/commentRss/196890.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ioriiod0/services/trackbacks/196890.html</trackback:ping><description><![CDATA[<h3>鍗忕▼</h3><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鍗忕▼錛屽嵆鍗忎綔寮忕▼搴忥紝鍏舵濇兂鏄紝涓緋誨垪浜掔浉渚濊禆鐨勫崗紼嬮棿渚濇浣跨敤CPU錛屾瘡嬈″彧鏈変竴涓崗紼嬪伐浣滐紝鑰屽叾浠栧崗紼嬪浜庝紤鐪犵姸鎬併傚崗紼嬪彲浠ュ湪榪愯鏈熼棿鐨勬煇涓偣涓婃殏鍋滄墽琛岋紝騫跺湪鎭㈠榪愯鏃朵粠鏆傚仠鐨勭偣涓婄戶緇墽琛屻?鍗忕▼宸茬粡琚瘉鏄庢槸涓縐嶉潪甯告湁鐢ㄧ殑紼嬪簭緇勪歡錛屼笉浠呰python銆乴ua銆乺uby絳夎剼鏈璦騫挎硾閲囩敤錛岃屼笖琚柊涓浠i潰鍚戝鏍哥殑緙栫▼璇█濡俫olang rust-lang絳夐噰鐢ㄤ綔涓哄茍鍙戠殑鍩烘湰鍗曚綅銆?鍗忕▼鍙互琚涓烘槸涓縐嶇敤鎴風┖闂寸嚎紼嬶紝涓庝紶緇熺殑綰跨▼鐩告瘮錛屾湁2涓富瑕佺殑浼樼偣錛?/p><ul style="padding: 0px; margin: 0px 0px 10px 20px; list-style-position: inside; font-family: Verdana, sans-serif, 瀹嬩綋; line-height: normal; background-color: #ffffff;"><li style="padding: 0px; margin: 0px;">涓庣嚎紼嬩笉鍚岋紝鍗忕▼鏄嚜宸變富鍔ㄨ鍑篊PU錛屽茍浜や粯浠栨湡鏈涚殑涓嬩竴涓崗紼嬭繍琛岋紝鑰屼笉鏄湪浠諱綍鏃跺欓兘鏈夊彲鑳借緋葷粺璋冨害鎵撴柇銆傚洜姝ゅ崗紼嬬殑浣跨敤鏇村姞娓呮櫚鏄撴噦錛屽茍涓斿鏁版儏鍐典笅涓嶉渶瑕侀攣鏈哄埗銆?/li><li style="padding: 0px; margin: 0px;">涓庣嚎紼嬬浉姣旓紝鍗忕▼鐨勫垏鎹㈢敱紼嬪簭鎺у埗錛屽彂鐢熷湪鐢ㄦ埛絀洪棿鑰岄潪鍐呮牳絀洪棿錛屽洜姝ゅ垏鎹㈢殑浠d環闈炲父灝忋?/li></ul><h3>緗戠粶緙栫▼妯″瀷</h3><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">棣栧厛鏉ョ畝鍗曞洖欏句竴涓嬩竴浜涘父鐢ㄧ殑緗戠粶緙栫▼妯″瀷銆傜綉緇滅紪紼嬫ā鍨嬪彲浠ュぇ浣撶殑鍒嗕負鍚屾妯″瀷鍜屽紓姝ユā鍨嬩袱綾匯?/p><ul style="padding: 0px; margin: 0px 0px 10px 20px; list-style-position: inside; font-family: Verdana, sans-serif, 瀹嬩綋; line-height: normal; background-color: #ffffff;"><li style="padding: 0px; margin: 0px;">鍚屾妯″瀷錛?/li></ul><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鍚屾妯″瀷浣跨敤闃誨IO妯″紡,鍦ㄩ樆濉濱O妯″紡涓嬭皟鐢╮ead絳塈O鍑芥暟鏃朵細闃誨綰跨▼鐩村埌IO瀹屾垚鎴栧け璐ャ?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鍚屾妯″瀷鐨勫吀鍨嬩唬琛ㄦ槸thread per connection妯″瀷錛屾瘡褰撻樆濉炲湪涓葷嚎紼嬩笂鐨刟ccept璋冪敤榪斿洖鏃跺垯鍒涘緩涓涓柊鐨勭嚎紼嬪幓鏈嶅姟浜庢柊鐨剆ocket鐨勮/鍐欍傝繖縐嶆ā鍨嬬殑浼樼偣鏄▼搴忕畝媧侊紝緙栧啓綆鍗曪紱緙虹偣鏄彲浼哥緝鎬ф敹鍒扮嚎紼嬫暟鐨勯檺鍒訛紝褰撹繛鎺ヨ秺鏉ヨ秺澶氭椂錛岀嚎紼嬩篃瓚婃潵瓚婂錛岄綣佺殑綰跨▼鍒囨崲浼氫弗閲嶆嫋绱ц兘銆?/p><ul style="padding: 0px; margin: 0px 0px 10px 20px; list-style-position: inside; font-family: Verdana, sans-serif, 瀹嬩綋; line-height: normal; background-color: #ffffff;"><li style="padding: 0px; margin: 0px;">寮傛妯″瀷錛?/li></ul><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">寮傛妯″瀷涓鑸嬌鐢ㄩ潪闃誨IO妯″紡錛屽茍閰嶅悎epoll/select/poll絳夊璺鐢ㄦ満鍒躲傚湪闈為樆濉炴ā寮忎笅璋冪敤read錛屽鏋滄病鏈夋暟鎹彲璇誨垯绔嬪嵆榪斿洖騫墮氱煡鐢ㄦ埛娌℃湁鍙錛圗AGAIN/EWOULDBLOCK錛夛紝鑰岄潪闃誨褰撳墠綰跨▼銆傚紓姝ユā鍨嬪彲浠ヤ嬌涓涓嚎紼嬪悓鏃舵湇鍔′簬澶氫釜IO瀵硅薄銆?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">寮傛妯″瀷鐨勫吀鍨嬩唬琛ㄦ槸reactor妯″瀷銆傚湪reactor妯″瀷涓紝鎴戜滑灝嗘墍鏈夎澶勭悊鐨処O浜嬩歡娉ㄥ唽鍒頒竴涓腑蹇冪殑IO澶氳礬澶嶇敤鍣ㄤ腑錛堜竴鑸負epoll/select/poll錛夛紝鍚屾椂涓葷嚎紼嬮樆濉炲湪澶氳礬澶嶇敤鍣ㄤ笂銆備竴鏃︽湁IO浜嬩歡鍒版潵鎴栬呭氨緇紝澶氳礬澶嶇敤鍣ㄨ繑鍥炲茍灝嗗搴旂殑IO浜嬩歡鍒嗗彂鍒板搴旂殑澶勭悊鍣紙鍗沖洖璋冨嚱鏁幫級涓紝鏈鍚庡鐞嗗櫒璋冪敤read/write鍑芥暟鏉ヨ繘琛孖O鎿嶄綔銆?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">寮傛妯″瀷鐨勭壒鐐規槸鎬ц兘鍜屽彲浼哥緝鎬ф瘮鍚屾妯″瀷瑕佸ソ寰堝錛屼絾鏄叾緇撴瀯澶嶆潅錛屼笉鏄撲簬緙栧啓鍜岀淮鎶ゃ傚湪寮傛妯″瀷涓紝IO涔嬪墠鐨勪唬鐮侊紙IO浠誨姟鐨勬彁浜よ咃級鍜孖O涔嬪悗鐨勫鐞嗕唬鐮侊紙鍥炶皟鍑芥暟錛夋槸鍓茶寮鏉ョ殑銆?/p><h3>鍗忕▼涓庣綉緇滅紪紼?/h3><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鍗忕▼涓哄厠鏈嶅悓姝ユā鍨嬪拰寮傛妯″瀷鐨勭己鐐癸紝騫剁粨鍚堜粬浠殑浼樼偣鎻愪緵浜嗗彲鑳斤細 鐜板湪鍋囪鎴戜滑鏈?涓崗紼婣,B,C鍒嗗埆瑕佽繘琛屾暟嬈O鎿嶄綔銆傝繖3涓崗紼嬭繍琛屽湪鍚屼竴涓皟搴﹀櫒鎴栬呰綰跨▼鐨勪笂涓嬫枃涓紝騫朵緷嬈′嬌鐢–PU銆傝皟搴﹀櫒鍦ㄥ叾鍐呴儴緇存姢浜嗕竴涓璺鐢ㄥ櫒錛坋poll/select/poll錛夈?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鍗忕▼A棣栧厛榪愯錛屽綋瀹冩墽琛屽埌涓涓狪O鎿嶄綔錛屼絾璇O鎿嶄綔騫舵病鏈夌珛鍗沖氨緇椂錛孉灝嗚IO浜嬩歡娉ㄥ唽鍒拌皟搴﹀櫒涓紝騫朵富鍔ㄦ斁寮僀PU銆傝繖鏃惰皟搴﹀櫒灝咮鍒囨崲鍒癈PU涓婂紑濮嬫墽琛岋紝鍚屾牱錛屽綋瀹冪鍒頒竴涓狪O鎿嶄綔鐨勬椂鍊欏皢IO浜嬩歡娉ㄥ唽鍒拌皟搴﹀櫒涓紝騫朵富鍔ㄦ斁寮僀PU銆傝皟搴﹀櫒灝咰鍒囨崲鍒癱pu涓婂紑濮嬫墽琛屻傚綋鎵鏈夊崗紼嬮兘琚?#8220;闃誨”鍚庯紝璋冨害鍣ㄦ鏌ユ敞鍐岀殑IO浜嬩歡鏄惁鍙戠敓鎴栧氨緇傚亣璁炬鏃跺崗紼婤娉ㄥ唽鐨処O鏃墮棿宸茬粡灝辯華錛岃皟搴﹀櫒灝嗘仮澶岯鐨勬墽琛岋紝B灝嗕粠涓婃鏀懼純CPU鐨勫湴鏂規帴鐫鍚戜笅榪愯銆侫鍜孋鍚岀悊銆?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">榪欐牱錛屽浜庢瘡涓涓崗紼嬫潵璇達紝鏄悓姝ョ殑妯″瀷錛涗絾鏄浜庢暣涓簲鐢ㄧ▼搴忔潵璇達紝鍗存槸寮傛鐨勬ā鍨嬨?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">濂戒簡錛屽師鐞嗚瀹屼簡錛屾垜浠潵鐪嬩竴涓疄闄呯殑渚嬪瓙錛宔cho server銆?/p><h3>echo server</h3><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鍦ㄨ繖涓緥瀛愪腑錛屾垜浠皢浣跨敤orchid搴撴潵緙栧啓涓涓猠cho server銆?a rel="nofollow" style="padding: 0px; margin: 0px; color: #4466bb; outline: 0px;">orchid</a>搴撴槸涓涓瀯寤轟簬boost鍩虹涓婄殑 鍗忕▼/緗戠粶IO 搴撱?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">echo server棣栧厛蹇呴』瑕佸鐞嗚繛鎺ヤ簨浠訛紝鎴戜滑鍒涘緩涓涓崗紼嬫潵涓撻棬澶勭悊榪炴帴浜嬩歡錛?/p><pre style="padding: 5px; margin-top: 10px; margin-bottom: 10px; line-height: 18px; font-size: 9pt; font-family: 'Courier New', Arial; border-width: 1px 1px 1px 5px; border-style: solid; border-color: #dddddd #dddddd #dddddd #6ce26c; background-color: #f6f6f6;"><code style="padding: 0px; margin: 0px; border: none; background-color: transparent; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;">typedef boost::shared_ptr<orchid::socket> socket_ptr; <br />//澶勭悊ACCEPT浜嬩歡鐨勫崗紼?<br />void handle_accept(orchid::coroutine_handle co) {<br /> try { <br />         orchid::acceptor acceptor(co -> get_scheduler().get_io_service());//鏋勫緩涓涓猘cceptor<br /> acceptor.bind_and_listen("5678",true); <br />         for(;;) { <br />            socket_ptr sock(new orchid::socket(co -> get_scheduler().get_io_service()));<br /> acceptor.accept(*sock,co); <br />            <span style="background-color: transparent; font-family: 'Courier New', Arial; font-size: 9pt;">//鍦ㄨ皟搴﹀櫒涓婂垱寤轟竴涓崗紼嬫潵鏈嶅姟鏂扮殑socket銆?/span><span style="background-color: transparent; font-family: 'Courier New', Arial; font-size: 9pt;">絎竴涓弬鏁版槸瑕佸垱寤虹殑鍗忕▼鐨刴ain鍑芥暟錛?/span><span style="background-color: transparent; font-family: 'Courier New', Arial; font-size: 9pt;">絎簩涓弬鏁版槸瑕佸垱寤虹殑鍗忕▼鐨勬爤鐨勫ぇ灝忋?/span><br />            co -> get_scheduler().spawn(boost::bind(handle_io,_1,sock),orchid::minimum_stack_size());<br /> }<br /> } catch(boost::system::system_error& e) {<br />            cerr<<e.code()<<" "<<e.what()<<endl;<br /> } <br />} </code></pre><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鍦╫rchid涓紝鍗忕▼鐨刴ain鍑芥暟蹇呴』婊¤凍鍑芥暟絳懼悕void(orchid::coroutine_handle)錛屽handle_accept鎵紺猴紝鍏朵腑鍙傛暟co鏄崗紼嬪彞鏌勶紝浠h〃浜嗗綋鍓嶅嚱鏁版墍浣嶄簬鐨勫崗紼嬨?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鍦ㄤ笂闈㈢殑浠g爜涓紝鎴戜滑鍒涘緩浜嗕竴涓猘cceptor錛屽茍璁╁畠鐩戝惉5678绔彛錛岀劧鍚庡湪"闃誨"絳夊緟榪炴帴鍒版潵錛屽綋榪炴帴浜嬩歡鍒版潵鏃訛紝鍒涘緩涓涓柊鐨勫崗紼嬫潵鏈嶅姟鏂扮殑socket銆傚鐞嗗鎺ュ瓧IO鐨勫崗紼嬪涓嬶細</p><pre style="padding: 5px; margin-top: 10px; margin-bottom: 10px; line-height: 18px; font-size: 9pt; font-family: 'Courier New', Arial; border-width: 1px 1px 1px 5px; border-style: solid; border-color: #dddddd #dddddd #dddddd #6ce26c; background-color: #f6f6f6;"><code style="padding: 0px; margin: 0px; border: none; background-color: transparent; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;">//澶勭悊SOCKET IO浜嬩歡鐨勫崗紼?<br />void handle_io(orchid::coroutine_handle co,socket_ptr sock) { <br />   orchid::tcp_ostream out(*sock,co); <br />   orchid::tcp_istream in(*sock,co); <br />   for(std::string str;std::getline(in, str) && out;) {<br />      out<<str<<endl; <br />   } <br />} </code></pre><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">IO澶勭悊鍗忕▼棣栧厛鍦ㄤ紶鍏ョ殑濂楁帴瀛椾笂鍒涘緩浜嗕竴涓緭鍏ユ祦鍜屼竴涓緭鍑烘祦錛屽垎鍒唬琛ㄤ簡TCP鐨勮緭鍏ュ拰杈撳嚭銆傜劧鍚庝笉鏂湴浠庤緭鍏ユ祦涓鍙栦竴琛岋紝騫惰緭鍑哄埌杈撳嚭嫻佸綋涓傚綋socket涓婄殑TCP榪炴帴鏂紑鏃訛紝杈撳叆嫻佸拰杈撳嚭嫻佺殑eof鏍囧織涓轟細琚疆浣嶏紝鍥犳寰幆緇撴潫錛屽崗紼嬮鍑恒?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">orchid鍙互浣跨敤鎴蜂互嫻佺殑褰㈠紡鏉ユ搷浣滃鎺ュ瓧銆傝緭鍏ユ祦鍜岃緭鍑烘祦鍒嗗埆鎻愪緵浜唖td::istream鍜宻td::ostream鐨勬帴鍙o紱杈撳叆嫻佸拰杈撳嚭嫻佹槸甯︾紦鍐茬殑錛屽鏋滅敤鎴烽渶瑕佹棤緙撳啿鐨勮鍐檚ocket鎴栬呰嚜寤虹紦鍐詫紝鍙互鐩存帴璋冪敤orchid::socket鐨剅ead鍜寃rite鍑芥暟銆備絾鏄渶瑕佹敞鎰忚繖涓や釜鍑芥暟浼氭姏鍑篵oost::system_error寮傚父鏉ヨ〃紺洪敊璇?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">緇嗗績鐨勮鑰呭彲鑳藉凡緇忓彂鐜幫紝handle_io鐨勫嚱鏁扮鍚嶅茍涓嶆弧瓚硋oid(orchid::coroutine_handle)錛屽洖鍒癶andle_accept涓紝鍙互鍙戠幇錛屽疄闄呬笂鎴戜滑浣跨敤浜哹oost.bind瀵筯andle _ io鍑芥暟榪涜浜嗛傞厤錛屼嬌涔嬬鍚堝嚱鏁扮鍚嶇殑瑕佹眰銆?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鏈鍚庢槸main鍑芥暟錛?/p><pre style="padding: 5px; margin-top: 10px; margin-bottom: 10px; line-height: 18px; font-size: 9pt; font-family: 'Courier New', Arial; border-width: 1px 1px 1px 5px; border-style: solid; border-color: #dddddd #dddddd #dddddd #6ce26c; background-color: #f6f6f6;"><code style="padding: 0px; margin: 0px; border: none; background-color: transparent; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;">int main() { <br />   orchid::scheduler sche; <br />   sche.spawn(handle_accept,orchid::coroutine::minimum_stack_size());//鍒涘緩鍗忕▼ <br />   sche.run(); <br />} </code></pre><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鍦ㄤ笂闈㈣繖涓猠cho server鐨勪緥瀛愪腑錛屾垜浠噰鐢ㄤ簡涓縐?coroutine per connection 鐨勭紪紼嬫ā鍨嬶紝涓庝紶緇熺殑 thread per connection 妯″瀷涓鏍風殑綆媧佹竻鏅幫紝浣嗘槸鏁翠釜紼嬪簭瀹為檯涓婅繍琛屽湪鍚屼竴綰跨▼褰撲腑銆?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鐢變簬鍗忕▼鐨勫垏鎹㈠紑閿榪滆繙灝忎簬綰跨▼錛屽洜姝ゆ垜浠彲浠ヨ交鏄撶殑鍚屾椂鍚姩涓婂崈鍗忕▼鏉ュ悓鏃舵湇鍔′笂鍗冭繛鎺ワ紝榪欐槸 thread per connection鐨勬ā鍨嬪緢闅懼仛鍒扮殑錛涘湪鎬ц兘鏂歸潰錛屾暣涓簳灞傜殑IO緋葷粺瀹為檯涓婃槸浣跨敤boost.asio榪欑楂樻ц兘鐨勫紓姝o搴撳疄鐜扮殑銆傝屼笖涓嶪O鎵璐圭殑鏃墮棿鐩告瘮錛屽崗紼嬪垏鎹㈢殑寮閿鍩烘湰鍙互蹇界暐銆?/p><p style="padding: 0px; margin: 0px 0px 15pt; line-height: 1.5; letter-spacing: 1px; font-family: Verdana, sans-serif, 瀹嬩綋; background-color: #ffffff;">鍥犳閫氳繃鍗忕▼錛屾垜浠彲浠ュ湪淇濇寔鍚屾IO妯″瀷綆媧佹х殑鍚屾椂錛岃幏寰楄繎浼間簬寮傛IO妯″瀷鐨勯珮鎬ц兘銆?/p><img src ="http://www.shnenglu.com/ioriiod0/aggbug/196890.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ioriiod0/" target="_blank">姹熸蹈鏈?/a> 2013-01-01 13:14 <a href="http://www.shnenglu.com/ioriiod0/archive/2013/01/01/196890.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>涓簊td::tuple娣誨姞鏍煎紡鍖?搴忓垪鍖栨敮鎸?/title><link>http://www.shnenglu.com/ioriiod0/archive/2011/11/28/161049.html</link><dc:creator>姹熸蹈鏈?/dc:creator><author>姹熸蹈鏈?/author><pubDate>Sun, 27 Nov 2011 21:17:00 GMT</pubDate><guid>http://www.shnenglu.com/ioriiod0/archive/2011/11/28/161049.html</guid><wfw:comment>http://www.shnenglu.com/ioriiod0/comments/161049.html</wfw:comment><comments>http://www.shnenglu.com/ioriiod0/archive/2011/11/28/161049.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/ioriiod0/comments/commentRss/161049.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ioriiod0/services/trackbacks/161049.html</trackback:ping><description><![CDATA[<div><h1><span style="line-height: normal; ">杞澆璇鋒敞鏄庡嚭澶勩傝阿璋?/span></h1></div>C++11涓湁寰堝嬋鍔ㄤ漢蹇冪殑鐗規?浣嗘槸鐩稿簲鐨勪嬌寰桟++鏇村姞澶嶆潅銆傘傘?br /><font class="Apple-style-span" face="Simsun" size="3"><span id="aaw4u2y" class="Apple-style-span" style="line-height: normal; ">鏂版爣鍑嗚繕淇敼浜嗗師鏈夋爣鍑嗗簱錛屽茍澧炲姞浜嗗緢澶氬唴瀹廣?br /><br />鍦ㄥ涔犳柊鏍囧噯鐨勮繃紼嬩腑鍔ㄦ墜鍐欎簡涓?涓簊td::tuple澧炲姞鏍煎紡鍖?搴忓垪鍖栬兘鍔涚殑涓灝忔浠g爜<br /><br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> DECLARE_TUPLE_SERIALIZATION_FUNCTION(FUNC_NAME,BEG,SEP,END)     \</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; "> sjdfsjfyttsaihfah6755jsdf554433356sdf{                        \<br />template </span><span style="color: #000000; "><</span><span style="color: #000000; ">typename Tuple,std::size_t N</span><span style="color: #000000; ">></span><span style="color: #000000; ">                                 \<br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> tuple_printer                                                    \<br />{                                                                       \<br />    </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> print(std::ostream</span><span style="color: #000000; ">&</span><span style="color: #000000; "> os,</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> Tuple</span><span style="color: #000000; ">&</span><span style="color: #000000; "> t)                  \<br />    {                                                                   \<br />        os</span><span style="color: #000000; "><<</span><span style="color: #000000; ">std::</span><span style="color: #0000FF; ">get</span><span style="color: #000000; "><</span><span style="color: #000000; ">std::tuple_size</span><span style="color: #000000; "><</span><span style="color: #000000; ">Tuple</span><span style="color: #000000; ">></span><span style="color: #000000; ">::value </span><span style="color: #000000; ">-</span><span style="color: #000000; "> N </span><span style="color: #000000; ">></span><span style="color: #000000; ">(t)</span><span style="color: #000000; "><<</span><span style="color: #000000; ">SEP;       \<br />        tuple_printer</span><span style="color: #000000; "><</span><span style="color: #000000; ">Tuple,N</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">></span><span style="color: #000000; ">::print(os,t);                          \<br />    }                                                                   \<br />};                                                                      \<br />                                                                        \<br />template </span><span style="color: #000000; "><</span><span style="color: #000000; ">typename Tuple</span><span style="color: #000000; ">></span><span style="color: #000000; ">                                               \<br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> tuple_printer</span><span style="color: #000000; "><</span><span style="color: #000000; ">Tuple,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">></span><span style="color: #000000; ">                                           \<br />{                                                                       \<br />    </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> print(std::ostream</span><span style="color: #000000; ">&</span><span style="color: #000000; "> os,</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> Tuple</span><span style="color: #000000; ">&</span><span style="color: #000000; "> t)                  \<br />    {                                                                   \<br />        os</span><span style="color: #000000; "><<</span><span style="color: #000000; ">std::</span><span style="color: #0000FF; ">get</span><span style="color: #000000; "><</span><span style="color: #000000; ">std::tuple_size</span><span style="color: #000000; "><</span><span style="color: #000000; ">Tuple</span><span style="color: #000000; ">></span><span style="color: #000000; ">::value</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">></span><span style="color: #000000; ">(t);               \<br />    }                                                                   \<br />};                                                                      \<br />}                                                                       \<br />template </span><span style="color: #000000; "><</span><span style="color: #000000; ">typename Tuple</span><span style="color: #000000; ">></span><span style="color: #000000; ">                                               \<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> FUNC_NAME(std::ostream</span><span style="color: #000000; ">&</span><span style="color: #000000; "> os,</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> Tuple</span><span style="color: #000000; ">&</span><span style="color: #000000; "> t)                         \<br />{                                                                       \<br />    os</span><span style="color: #000000; "><<</span><span style="color: #000000; ">BEG;                                                            \<br />    sjdfsjfyttsaihfah6755jsdf554433356sdf::tuple_printer</span><span style="color: #000000; "><</span><span style="color: #000000; ">Tuple,std::tuple_size</span><span style="color: #000000; "><</span><span style="color: #000000; ">Tuple</span><span style="color: #000000; ">></span><span style="color: #000000; ">::value</span><span style="color: #000000; ">></span><span style="color: #000000; ">::print(os,t);    \<br />    os</span><span style="color: #000000; "><<</span><span style="color: #000000; ">END;                                                            \<br />}                                                                       <br /></span></div></span></font><font class="Apple-style-span" face="Simsun" size="3"><span id="s422kgo" class="Apple-style-span" style="line-height: normal; ">瀹炵幇鎴愬畯鏄負浜嗕嬌鐢ㄨ搗鏉ユ洿鏂逛究錛屽彲浠ラ殢鎰忔寚瀹?鍑芥暟鍚?鍓嶇紑 鍒嗛殧絎?鍜?鍚庣紑銆?br />浣跨敤鏂規硶濡備笅錛?br /><br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">DECLARE_TUPLE_SERIALIZATION_FUNCTION(serialize_tuple,</span><span style="color: #000000; ">"</span><span style="color: #000000; "><</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; "> , </span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">></span><span style="color: #000000; ">"</span><span style="color: #000000; ">)<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">10</span><span style="color: #000000; ">;<br />    auto a </span><span style="color: #000000; ">=</span><span style="color: #000000; "> std::make_tuple(</span><span style="color: #000000; ">3</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">lala</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,i,</span><span style="color: #000000; ">'</span><span style="color: #000000; ">c</span><span style="color: #000000; ">'</span><span style="color: #000000; ">);</span><span style="color: #000000; "><br />    serialize_tuple(std::cout,a); <br />}</span></div><br />杈撳嚭涓猴細<br /><3 , "lala" , 10 , c><br /><br />嫻嬭瘯鐜涓篏CC 4.5錛屾敞鎰忕紪璇戞椂鍊欒鎵撳紑C++0X鏀寔銆?br /><br /><br /></span></font><img src ="http://www.shnenglu.com/ioriiod0/aggbug/161049.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ioriiod0/" target="_blank">姹熸蹈鏈?/a> 2011-11-28 05:17 <a href="http://www.shnenglu.com/ioriiod0/archive/2011/11/28/161049.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍋歁TK絎旇瘯鐨勬葷粨錛堜簩錛夛紞錛岰錛嬶紜 榪斿洖鍊間紭鍖栵紙RVO錛?/title><link>http://www.shnenglu.com/ioriiod0/archive/2011/08/13/153300.html</link><dc:creator>姹熸蹈鏈?/dc:creator><author>姹熸蹈鏈?/author><pubDate>Sat, 13 Aug 2011 13:38:00 GMT</pubDate><guid>http://www.shnenglu.com/ioriiod0/archive/2011/08/13/153300.html</guid><wfw:comment>http://www.shnenglu.com/ioriiod0/comments/153300.html</wfw:comment><comments>http://www.shnenglu.com/ioriiod0/archive/2011/08/13/153300.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.shnenglu.com/ioriiod0/comments/commentRss/153300.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ioriiod0/services/trackbacks/153300.html</trackback:ping><description><![CDATA[<span id="4i4osik" class="Apple-style-span" style="color: #4b4b4b; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">棰樼洰浜岋細<br />   棰樼洰鎴戝仛浜嗕笅鏀瑰彉錛屼嬌鐢ㄤ簡涓婄瘒鏂囩珷涓彁鍒扮殑閭d釜綾籜錛屼唬鐮佸涓嬶細<br /><br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">class</span><span style="color: #000000; "> X<br /></span><span style="color: #008080; "> 2</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; "> 3</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; "> 4</span> <span style="color: #000000; ">    X(){cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">default construct</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;}<br /></span><span style="color: #008080; "> 5</span> <span style="color: #000000; ">    X(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> a):i(a){ cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">construct </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">i</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;}<br /></span><span style="color: #008080; "> 6</span> <span style="color: #000000; ">    </span><span style="color: #000000; ">~</span><span style="color: #000000; ">X(){ cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">desconstruct </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">i</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;}<br /></span><span style="color: #008080; "> 7</span> <span style="color: #000000; ">    X(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> x):i(x.i)<br /></span><span style="color: #008080; "> 8</span> <span style="color: #000000; ">    {<br /></span><span style="color: #008080; "> 9</span> <span style="color: #000000; ">        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">copy construct </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">i</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">10</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">11</span> <span style="color: #000000; ">    X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">operator</span><span style="color: #000000; ">++</span><span style="color: #000000; ">()<br /></span><span style="color: #008080; ">12</span> <span style="color: #000000; ">    {<br /></span><span style="color: #008080; ">13</span> <span style="color: #000000; ">        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">operator ++(pre) </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">i</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">14</span> <span style="color: #000000; ">        </span><span style="color: #000000; ">++</span><span style="color: #000000; ">i;<br /></span><span style="color: #008080; ">15</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">16</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">17</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> X </span><span style="color: #0000FF; ">operator</span><span style="color: #000000; ">++</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">18</span> <span style="color: #000000; ">    {<br /></span><span style="color: #008080; ">19</span> <span style="color: #000000; ">        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">operator ++(post) </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">i</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">20</span> <span style="color: #000000; ">        X x(</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">21</span> <span style="color: #000000; ">        </span><span style="color: #000000; ">++</span><span style="color: #000000; ">i;<br /></span><span style="color: #008080; ">22</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> x;<br /></span><span style="color: #008080; ">23</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">24</span> <span style="color: #000000; ">    X</span><span style="color: #000000; ">&</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; ">int</span><span style="color: #000000; "> m)<br /></span><span style="color: #008080; ">25</span> <span style="color: #000000; ">    {<br /></span><span style="color: #008080; ">26</span> <span style="color: #000000; ">        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">operator =(int)</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">27</span> <span style="color: #000000; ">        i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> m;<br /></span><span style="color: #008080; ">28</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">29</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">30</span> <span style="color: #000000; ">    X</span><span style="color: #000000; ">&</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; "> X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> x)<br /></span><span style="color: #008080; ">31</span> <span style="color: #000000; ">    {<br /></span><span style="color: #008080; ">32</span> <span style="color: #000000; ">        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">operator =(X)</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">33</span> <span style="color: #000000; ">        i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">x.i;<br /></span><span style="color: #008080; ">34</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">35</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">36</span> <span style="color: #000000; ">    </span><span style="color: #808080; ">////////////////////////</span><span style="color: #008000; ">/</span><span style="color: #808080; "><br /></span><span style="color: #008080; ">37</span> <span style="color: #808080; "></span><span style="color: #000000; ">    friend ostream</span><span style="color: #000000; ">&</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">operator</span><span style="color: #000000; "><<</span><span style="color: #000000; ">(ostream</span><span style="color: #000000; ">&</span><span style="color: #000000; "> os,</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> x)<br /></span><span style="color: #008080; ">38</span> <span style="color: #000000; ">    {<br /></span><span style="color: #008080; ">39</span> <span style="color: #000000; ">        os</span><span style="color: #000000; "><<</span><span style="color: #000000; ">x.i;<br /></span><span style="color: #008080; ">40</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> os;<br /></span><span style="color: #008080; ">41</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">42</span> <span style="color: #000000; ">    friend X </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; "> X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> a,</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> b)<br /></span><span style="color: #008080; ">43</span> <span style="color: #000000; ">    {<br /></span><span style="color: #008080; ">44</span> <span style="color: #000000; ">        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">operator +</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br /></span><span style="color: #008080; ">45</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> X(a.i</span><span style="color: #000000; ">+</span><span style="color: #000000; ">b.i);<br /></span><span style="color: #008080; ">46</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">47</span> <span style="color: #000000; ">    </span><span style="color: #808080; ">////////////////////////</span><span style="color: #008000; ">//</span><span style="color: #808080; "><br /></span><span style="color: #008080; ">48</span> <span style="color: #808080; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">49</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i;<br /></span><span style="color: #008080; ">50</span> <span style="color: #000000; ">};</span></div><br /></span>璇烽棶浠ヤ笅浠g爜鐨勮緭鍑烘槸浠涔堬紵<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: #008080; ">1</span> <span style="color: #000000; ">X a(</span><span style="color: #000000; ">10</span><span style="color: #000000; ">),b(</span><span style="color: #000000; ">20</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">2</span> <span style="color: #000000; ">X c</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">b;</span></div><br />鎴戜滑鏉ョ湅涓涓嬩嬌鐢℅CC4.5錛堥粯璁ょ紪璇戦夐」錛変互鍙奙SVC9.0(BOTH DEBUG AND RELEASE)緙栬瘧鍚庣殑瀹為檯榪愯緇撴灉錛?br /><div><div>construct 10</div><div>construct 20</div><div>operator +</div><div>construct 30</div><div>desconstruct 30</div><div>desconstruct 20</div><div>desconstruct 10<br /><br />綆鍗曞垎鏋愪笅榪欎釜杈撳嚭錛?br /><br /><div><div>construct 10 </div><div>construct 20 //瀵瑰簲 X a(10),b(20);</div><div>operator +  //璋冪敤“+”鎿嶄綔絎?/div><div>construct 30 //璋冪敤X(int){...}錛?4琛屽</div><div>desconstruct 30 //鍙橀噺c 鐨勬瀽鏋?/div><div>desconstruct 20 //鍙橀噺b 鐨勬瀽鏋?/div><div>desconstruct 10 //鍙橀噺a 鐨勬瀽鏋?/div></div> 浠庣粨鏋滃彲浠ョ湅鍑猴紝鏁翠釜鎵ц榪囩▼涓病鏈夎緭鍑?#8220;operator=”錛岃鏄庡帇鏍規病鏈夎皟鐢?#8220;錛?#8221;鎿嶄綔絎︼紝鑰屼笖鏁翠釜榪囩▼姣旀垜鎯寵薄鐨勮綆媧侀珮鏁堬紝娌℃湁涓存椂瀵硅薄錛屾病鏈夋嫹璐濇瀯閫犮?br />緇撴灉涓轟粈涔堜細鏄繖鏍峰憿錛熻繖涓昏褰掑姛浜庣紪璇戝櫒鐨勮繑鍥炲間紭鍖栫殑鑳藉姏銆?br />鏈夊叧榪斿洖鍊間紭鍖栫殑鐭ヨ瘑錛岄檺浜庣瘒騫呮垜灝變笉浠旂粏浠嬬粛浜嗭紝浣嗘槸闇瑕佺壒鍒寚鍑虹殑鏄疢SVC9.0鍙湪RELEASE妯″紡涓嬮粯璁ゅ紑鍚疦RVO錛屽嵆瀵瑰叿鍚嶅璞$殑榪斿洖鍊間紭鍖栵紝浠ュ強榪斿洖鍊間紭鍖栭噷闈㈢殑涓涓噸瑕佺殑緇嗚妭錛屼綋鐜板湪鏈緥閲屽氨鏄細涓轟粈涔堜腑鏁翠釜杈撳嚭涓病鏈夊嚭鐜?opeartor=",鍗充負浠涔堟病璋冪敤"="鎿嶄綔絎︺?br /><br />鐜板湪鎴戜滑灝嗕唬鐮佺◢寰敼鍙樹竴涓嬶紝鏀規垚涓嬮潰鐨勬牱瀛?<br /><br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">X a(</span><span style="color: #000000; ">10</span><span style="color: #000000; ">),b(</span><span style="color: #000000; ">20</span><span style="color: #000000; ">),c;<br />c</span><span style="color: #000000; ">=</span><span style="color: #000000; ">a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">b;  錛忥紡榪欓噷鎴戜滑灝哻鐨勬瀯閫犲拰璧嬪煎垎寮浜?/span></div><br />鎵ц鐨勭粨鏋滃涓嬶細<br /><br /><div><div>construct 10 錛忥紡鏋勯燼</div><div>construct 20 錛忥紡鏋勯燽</div><div>default construct 錛忥紡鏋勯?c</div><div>operator +  錛忥紡璋冪敤“+”鎿嶄綔絎?/div><div>construct 30 錛忥紡璋冪敤X(int){...}錛?4琛屽</div><div>operator =(X) 錛忥紡璋冪敤“錛?#8221;鎿嶄綔絎?/div><div>desconstruct 30 錛忥紡浠g爜45琛屾墍寤虹珛鐨勪復鏃跺璞$殑鏋愭瀯</div><div>desconstruct 30 錛忥紡鍙橀噺c鐨勬瀽鏋?/div><div>desconstruct 20 錛忥紡鍙橀噺b鐨勬瀽鏋?/div><div>desconstruct 10 錛忥紡鍙橀噺c鐨勬瀽鏋?br /><br />瀵規瘮鍓嶅悗鐨勮緭鍑虹粨鏋滐紝鍙互鍙戠幇澶氬嚭浠ヤ笅涓夎</div></div><div><div>default construct </div></div><div>operator =(X) </div><div>desconstruct 30 <br />鍑虹幇榪欑宸紓鐨勫師鍥犲湪浜庯細<div style="display: inline-block; "></div><span id="qa2qe44" class="Apple-style-span" style="color: #333333; font-family: Arial; background-color: #ffffff; ">瀹氫箟c鐨勬椂鍊欎細璋冪敤榛樿鐨勬瀯閫犲嚱鏁拌繘琛屽垵濮嬪寲錛屽洜姝ょ涓鏉¤鍙ユ墽琛屽畬涔嬪悗錛宑宸茬粡鏄竴涓瓨鍦ㄧ殑瀵硅薄錛屾墍浠ョ浜屾潯璇彞騫舵病鏈夋潈鍒╁幓鐩存帴淇敼c鐨勫唴瀹癸紝蹇呴』瑕侀氳繃璋冪敤璧嬪兼搷浣滅”=“錛屽洜姝ゅ繀欏昏浜х敓涓涓復鏃跺璞°傝屽湪絎竴涓緥瀛愪腑錛屽洜涓烘墽琛屽埌絎簩鏉¤鍙ヤ箣鍓峜騫舵病鏈夎鍒涘緩,鎵浠ョ紪璇戝櫒鍙互灝?琛ㄨ揪寮廰+b鐨勮繑鍥炲肩洿鎺ユ瀯寤哄湪c鐨勫唴瀛樹腑錛屼粠鑰屼紭鍖栨帀涓存椂瀵硅薄鍜屽“錛?#8221;鐨勮皟鐢ㄣ?br /></span></div></div></div><div></div><img src ="http://www.shnenglu.com/ioriiod0/aggbug/153300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ioriiod0/" target="_blank">姹熸蹈鏈?/a> 2011-08-13 21:38 <a href="http://www.shnenglu.com/ioriiod0/archive/2011/08/13/153300.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍋歁TK絎旇瘯鐨勬葷粨錛堜竴錛?/title><link>http://www.shnenglu.com/ioriiod0/archive/2011/08/13/153284.html</link><dc:creator>姹熸蹈鏈?/dc:creator><author>姹熸蹈鏈?/author><pubDate>Sat, 13 Aug 2011 09:30:00 GMT</pubDate><guid>http://www.shnenglu.com/ioriiod0/archive/2011/08/13/153284.html</guid><wfw:comment>http://www.shnenglu.com/ioriiod0/comments/153284.html</wfw:comment><comments>http://www.shnenglu.com/ioriiod0/archive/2011/08/13/153284.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://www.shnenglu.com/ioriiod0/comments/commentRss/153284.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ioriiod0/services/trackbacks/153284.html</trackback:ping><description><![CDATA[浠婂勾瑕佸紑濮嬫壘宸ヤ綔浜嗭紝鏈潃縐瘡緇忛獙鐨勭洰鐨勶紝璺戝幓鍋氫簡涓婱TK鐨勭瑪璇曢錛岀瑪璇曠殑鍐呭涓昏鏄疌錛嬶紜銆?br />鍥犱負寮鍙戜腑涓鐩翠嬌鐢–錛嬶紜錛岃屼笖瀵笴錛嬶紜閲岀殑楂樼駭鐗規э細闈㈠悜瀵硅薄錛屾ā鏉跨瓑閮芥瘮杈冪啛鎮夛紝榪樻病浜嬪枩嬈㈢爺絀朵笅STL錛孊OOST錛屾墍浠ュ鑷繁鐨凜錛嬶紜姘村鉤姣旇緝鑷俊錛屽洜姝や簨鍏堜篃娌″仛浠諱綍鍑嗗錛屽氨鐩存帴鍘葷瑪璇曚簡銆傛湰鏉ョ瑪璇曞畬浜嗗悗瑙夊緱棰樼洰铔畝鍗曠殑錛屼絾鏄湰鐫璁ょ湡瀛︿範鐨勬佸害鍥炴潵鍚庢妸棰樼洰閮戒笂鏈鴻瘯楠屼簡涓嬶紝緇撴灉涓涓嬪氨鎮插墽浜嗭紝閿欑殑浣撴棤瀹屾湇鍟娿傘傘?br />鎬葷粨浜嗕竴涓嬶細<br />   1銆傝鐪熷寰咃紝涓嶈灝忕湅浜嗙瑪璇曢鐩細鍋氶鐨勬椂鍊欏績鎯寵繖浜涚瑪璇曢鐩兘寰堢畝鍗曞晩錛屽緢澶氶鐩兘鏄壂浜嗕竴鐪煎氨绔嬪嵆鍐欏嚭浜嗙瓟妗堬紝緇撴灉鍥炴潵鍚庢墠鍙戠幇榪欎簺棰樼洰閮借緗簡闄烽槺錛岃浣犳帀榪涘幓灝卞嚭涓嶆潵浜嗐?br />   2銆侰錛嬶紜鍩虹涓嶅鎵庡疄銆傛瀴鎴戣繕涓澶╁埌鏅氱殑鐮旂┒C錛嬶紜鐨勯珮綰х壒鎬э紝緇撴灉寰堝鍩虹鐨勭煡璇嗗嵈閮芥槸涓鐭ュ崐瑙c?br />鐗瑰皢姝ゆ絎旇瘯鐨勪竴浜涘績寰楀拰浣撲細璁板綍浜庢錛屽ソ鎻愰啋鑷繁銆備笅闈富瑕佸垎鏋愬嚑涓垜鍋氶敊鐨勯鐩傞鐩茍闈炰笌鍘熼瀹屽叏涓鑷淬?br />棰樼洰涓錛?br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">int</span><span style="color: #000000; "> a</span><span style="color: #000000; ">=</span><span style="color: #000000; ">10</span><span style="color: #000000; ">,b</span><span style="color: #000000; ">=</span><span style="color: #000000; ">6</span><span style="color: #000000; ">;<br />cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">b</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">a</span><span style="color: #000000; ">++<<</span><span style="color: #000000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">b</span><span style="color: #000000; ">++</span><span style="color: #000000; ">; </span></div><br />璇瘋鍑轟笂榪拌鍙ョ殑鎵ц緇撴灉銆?br />寰堝浜虹湅榪囪繖孌典唬鐮佸悗浼拌閮戒細鐩存帴灝卞啓涓婁簡 16 10 6 榪欐牱鐨勭粨鏋滃惂錛屼絾涓婃満瀹為獙鐨勮緭鍑虹粨鏋滄槸錛?18 10 6<br />涓轟粈涔堜細鍑虹幇榪欐牱鐨勭粨鏋滐紝涓嬮潰鏄垜鐨勫垎鏋愯繃紼嬶紝濡傛灉鏈変笉瀵圭殑鍦版柟璇峰ぇ瀹舵寚姝c?br />涓轟簡璺熻釜浠g爜鐨勬墽琛屾楠わ紝鎴戣璁′簡涓涓被X錛岃繖涓被鏄int鐨勬ā鎷燂紝琛屼負鏂歸潰涓巌nt鍩烘湰涓鑷達紝闄や簡浼氭墦鍗板嚭涓浜涘府鍔╂垜浠悊瑙g殑淇℃伅錛屼唬鐮佸涓嬶細<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: #0000FF; ">class</span><span style="color: #000000; "> X<br />{<br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />    X(){cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">default construct</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;}<br />    X(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> a):i(a){ cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">construct </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">i</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;}<br />    </span><span style="color: #000000; ">~</span><span style="color: #000000; ">X(){ cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">desconstruct </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">i</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;}<br />    X(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> x):i(x.i)<br />    {<br />        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">copy construct </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">i</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br />    }<br />    X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">operator</span><span style="color: #000000; ">++</span><span style="color: #000000; ">()<br />    {<br />        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">operator ++(pre) </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">i</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br />        </span><span style="color: #000000; ">++</span><span style="color: #000000; ">i;<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">;<br />    }<br />    </span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> X </span><span style="color: #0000FF; ">operator</span><span style="color: #000000; ">++</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">)<br />    {<br />        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">operator ++(post) </span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">i</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br />        X x(</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">);<br />        </span><span style="color: #000000; ">++</span><span style="color: #000000; ">i;<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> x;<br />    }<br />    X</span><span style="color: #000000; ">&</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; ">int</span><span style="color: #000000; "> m)<br />    {<br />        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">operator =(int)</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br />        i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> m;<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">;<br />    }<br />    X</span><span style="color: #000000; ">&</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; "> X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> x)<br />    {<br />        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">operator =(X)</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br />        i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">x.i;<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">;<br />    }<br />    </span><span style="color: #808080; ">////////////////////////</span><span style="color: #008000; ">/</span><span style="color: #808080; "><br /></span><span style="color: #000000; ">    friend ostream</span><span style="color: #000000; ">&</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">operator</span><span style="color: #000000; "><<</span><span style="color: #000000; ">(ostream</span><span style="color: #000000; ">&</span><span style="color: #000000; "> os,</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> x)<br />    {<br />        os</span><span style="color: #000000; "><<</span><span style="color: #000000; ">x.i;<br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> os;<br />    }<br />    friend X </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; "> X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> a,</span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> X</span><span style="color: #000000; ">&</span><span style="color: #000000; "> b)<br />    {<br />        cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">operator +</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;<br /></span><span style="color: #0000ff; ">        return</span><span style="color: #000000; "> X(a.i+b.i);</span><span style="color: #000000; "><br />    }<br />    </span><span style="color: #808080; ">////////////////////////</span><span style="color: #008000; ">//</span><span style="color: #808080; "><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i;<br />};</span></div><br />鐒跺悗鎵ц浠ヤ笅浠g爜錛?br /><br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">    X a(</span><span style="color: #000000; ">10</span><span style="color: #000000; ">),b(</span><span style="color: #000000; ">6</span><span style="color: #000000; ">);<br />    cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">sum:</span><span style="color: #000000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; "><<</span><span style="color: #000000; ">a</span><span style="color: #000000; ">+</span><span style="color: #000000; ">b</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; "> a:</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">a</span><span style="color: #000000; ">++<<</span><span style="color: #000000; ">"</span><span style="color: #000000; "> b:</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">b</span><span style="color: #000000; ">++<<</span><span style="color: #000000; ">endl;<br /></span></div><br />浣跨敤GCC4銆?緙栬瘧鍚庯紝浠g爜鐨勬墽琛岀粨鏋滃涓嬶細<br /><br /><div><div><div><div>construct 10</div><div>construct 6</div><div>operator ++(post) 6</div><div>copy construct 6</div><div>operator ++(post) 10</div><div>copy construct 10</div><div>operator +</div><div>construct 18</div><div>sum:18 a:10 b:6</div><div>desconstruct 18</div><div>desconstruct 10</div><div>desconstruct 6</div><div>desconstruct 7</div><div>desconstruct 11</div></div><div></div></div></div><div>鎴戜滑鏉ョ畝鍗曞垎鏋愪笅榪欎釜鎵ц榪囩▼錛?/div><br /><div><div>construct 10</div><div>construct 6  錛忥紡榪欎袱琛岃緭鍑哄搴斾簬 X a(10),b(6); <br /><br /><div><div>operator ++(post) 6</div><div>copy construct 6 錛忥紡琛ㄦ槑棣栧厛鎵ц浜?nbsp; cout<<"sum:" <<a+b<<" a:"<<a++<<" b:"<<b++<<endl;榪欏彞涓殑 b++榪欎釜琛ㄨ揪寮忥紝<br />                              b++榪欎釜琛ㄨ揪寮忚繑鍥炰簡涓涓間負6鐨勪復鏃跺璞★紝鑰宐鏈韓鍒欏彉鎴愪簡7銆?br /><div style="display: inline-block; "><div><div><div></div><div>operator ++(post) 10 <br />copy construct 10  錛忥紡榪欏彞鐨勫垎鏋愬悓涓?br /><br /><div><div>operator +</div><div>construct 18 //瀵瑰簲浜庤〃杈懼紡 a+b ,鍙互鐪嬪埌錛屾鏃剁殑a鍜宐宸茬粡鍙樻垚浜?1鍜?銆傝〃杈懼紡榪斿洖浜嗕竴涓間負18鐨勪復鏃跺璞°?br /><br /><div>sum:18 a:10 b:6 錛忥紡杈撳嚭鐨勭粨鏋滐紝浠庣粨鏋滃彲浠ョ湅鍑猴紝瀹為檯涓婃墦鍗板嚭鐨勫煎垎鍒負 a+b,a++鍜宐錛嬶紜涓変釜琛ㄨ揪寮忔墍榪斿洖鐨勪復鏃跺彉閲忋?/div></div></div></div></div></div></div></div></div><span id="w4cs24a" class="Apple-style-span" style="background-color: #eeeeee; "><span style="color: #000000; "><br /></span></span></div></div><div>desconstruct 18 錛忥紡a錛媌 琛ㄨ揪寮忚繑鍥炵殑涓存椂鍙橀噺鐨勬瀽鏋?/div><div>desconstruct 10 錛忥紡a錛嬶紜 琛ㄨ揪寮忚繑鍥炵殑涓存椂鍙橀噺鐨勬瀽鏋?/div><div>desconstruct 6 錛忥紡b錛嬶紜琛ㄨ揪寮忚繑鍥炵殑涓存椂鍙橀噺鐨勬瀽鏋?/div><div>desconstruct 7 錛忥紡鍙橀噺a 鐨勬瀽鏋?/div><div>desconstruct 11  錛忥紡鍙橀噺b鐨勬瀽鏋?br /><br />鐪熺浉澶х櫧浜嗐備負浠涔堢紪璇戝櫒浼氳繖鏍鋒潵緙栬瘧榪欎釜琛ㄨ揪寮忓憿錛?br />涓嬮潰2妤肩殑澶滈鍚屽緇欏嚭浜嗘紜瓟妗堛傘備負浜嗕笉璇鍚庨潰鐨勫悓瀛︼紝鐗規緙栬緫鎺夈傘?br /><br />涓婅堪瀹為獙鐨勭幆澧冨潎涓篏CC4銆?  鎹悓瀛﹁VS2010鎵ц鐨勭粨鏋滃湪DEBUG涓嬪拰RELEASE涓嬪眳鐒跺垎鍒負錛?6 10 6 鍜?8 10 6錛屼笉榪囨垜娌℃湁鍘婚獙璇佽繃錛屾湁鍏磋叮鐨勫悓瀛﹀彲浠ュ幓楠岃瘉騫跺垎鏋愪竴涓嬨?br />鍋氳繖鏍蜂竴閬撻榪樻槸璁╂垜鏀惰幏寰堝錛屽琺鍥轟簡C錛嬶紜鐨勫熀紜銆?br />浠婂ぉ灝卞啓閬撹繖閲岋紝鍚庨潰鏈夋椂闂翠細闄嗙畫鏀懼嚭瀵瑰叾浠?#8220;闄烽槺”棰樼洰鐨勫垎鏋愩?br />錛堟湭瀹屽緟緇級</div><font class="Apple-style-span" color="#008080" size="2"><br /></font><img src ="http://www.shnenglu.com/ioriiod0/aggbug/153284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ioriiod0/" target="_blank">姹熸蹈鏈?/a> 2011-08-13 17:30 <a href="http://www.shnenglu.com/ioriiod0/archive/2011/08/13/153284.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>瀵笲OOST 涓悓姝ヤ簰鏂ョ殑涓浜涚悊瑙?/title><link>http://www.shnenglu.com/ioriiod0/archive/2011/05/26/147135.html</link><dc:creator>姹熸蹈鏈?/dc:creator><author>姹熸蹈鏈?/author><pubDate>Wed, 25 May 2011 17:10:00 GMT</pubDate><guid>http://www.shnenglu.com/ioriiod0/archive/2011/05/26/147135.html</guid><wfw:comment>http://www.shnenglu.com/ioriiod0/comments/147135.html</wfw:comment><comments>http://www.shnenglu.com/ioriiod0/archive/2011/05/26/147135.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/ioriiod0/comments/commentRss/147135.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ioriiod0/services/trackbacks/147135.html</trackback:ping><description><![CDATA[棣栧厛錛孊OOST涓湁4縐嶆湁鍏充簰鏂ラ噺寰楁蹇點?br />1.LOCKABLE :浠呮敮鎸佹帓瀹冨瀷鎵鏈夋潈<br />2.TIMEDLOCKABLE錛氭敮鎸佸甫瓚呮椂鐨勬帓瀹冨瀷鎵鏈夋潈<br />3.SHAREDLOCKABLE錛?鏀寔甯﹁秴鏃剁殑鎺掍粬鍨嬫墍鏈夋潈鍜屽叡浜瀷鎵鏈夋潈錛堣鍐欓攣錛?br />4.UPGRADELOCKABLE錛?nbsp;<div style="display: inline-block; "></div>鏀寔甯﹁秴鏃剁殑鎺掍粬鍨嬫墍鏈夋潈鍜屽叡浜瀷鎵鏈夋潈錛屼互鍙婂叡浜瀷鎵鏈夋潈鍗囩駭涓烘帓浠栧瀷鎵鏈夋潈錛堝崌綰ц繃紼嬮樆濉烇級(涔熸敮鎸侀檷綰?<br /><br />鍙互鐪嬪埌2寮哄寲鑷?,3寮哄寲鑷?.4寮哄寲鑷?錛屾敮鎸佹煇涓姒傚康鍒欎竴瀹氭敮鎸佸叾寮哄寲鑷殑姒傚康銆?br /><br />boost::mutex 瀹炵幇浜哃OCKABLE姒傚康 錛坆oost::recursive_mutex 鏄叾閫掑綊閿佺殑鐗堟湰錛?br />boost::timed_mutex 瀹炵幇浜員IMEDLOCKABLE姒傚康 <div style="display: inline-block; "></div>錛坆oost::recursive_timed_mutex 鏄叾閫掑綊閿佺殑鐗堟湰錛?br />boost::shared_mutex瀹炵幇浜哠HAREDLOCKABLE姒傚康<br />boost::shared_mutex鍚屾牱瀹炵幇浜哢PGRADELOCKABLE姒傚康<br /><br />鍑轟簬鎻愪緵RAII鎿嶄綔椋庢牸鍜屽畨鍏ㄧ瓑鍏朵粬涓浜涘師鍥燘OOST涓嶅笇鏈涚敤鎴風洿鎺ヨ皟鐢ㄥ悇縐峂UTEX綾誨瀷涓殑鐩稿叧鎺ュ彛錛岃屾槸閫氳繃瀹冩彁渚涚殑涓浜汱OCK_TYPE鏉ュ府鍔╂垜浠皟鐢ㄣ?br /><br />涓昏鐨凩OCK_TYPE鍖呮嫭錛?br /><br />boost::unique_lock<LOCKABLE> 閽堝鏀寔LOCKABLE姒傚康鐨勭被鍨嬶紙涓婅堪4涓璏UTEX綾誨瀷閮芥敮鎸丩OCKABLE姒傚康錛夈備互RAII鐨勬柟寮忚皟鐢ㄨ綾葷殑lock() <div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: inline-block; "></div>錛堣皟鐢ㄦ垚鍔熷悗鎺掑畠鐨勭嫭鍗犺浜掓枼閲忥級鍜?unlock() 鏂規硶銆?br /><br />boost::shared_lock<SHAREDLOCKABLE>閽堝鏀寔SHAREDLOCKABLE姒傚康鐨勭被鍨嬶紝boost::shared_mutex瀹炵幇浜嗚姒傚康錛屾敞鎰忥紝鏀寔SHAREDLOCKABLE姒傚康鐨勭被鏃㈡敮鎸佹帓浠栫殑鐙崰錛堝啓閿侊紝閫氳繃璋冪敤lock unlock緋誨垪鍑芥暟錛夛紝涔熸敮鎸佸叡浜殑鏂瑰紡鍗犵敤錛堣閿侊紝閫氳繃璋冪敤lock_shared緋誨垪錛夛紝<div style="display: inline-block; "></div>shared_lock榛樿璋冪敤<div style="display: inline-block; "></div>lock_shared緋誨垪銆?br /><br />鏈涓昏鏈甯哥敤鐨勫氨鏄笂闈㈣繖涓や釜LOCK綾誨瀷錛屽垎鍒唬琛ㄧ嫭鍗犳柟寮忓拰鍏變韓鏂瑰紡錛屽叾浠栫殑灝變笉涓涓鍒嗘瀽浜嗐?br /><br />涓嬮潰鏄釜浠?a >http://hi.baidu.com/jrckkyy/blog/item/d7ccb508dfba2e3ce8248817.html</a>姝ゅ鎵懼埌鐨勪緥瀛?br /><br /><div><span id="eo24qem" class="Apple-style-span" style="color: #333333; font-family: Arial; font-size: 13px; line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">typedef <span id="gwms44w" class="hilite1" style="line-height: normal; ">boost</span>::shared_mutex rwmutex; <br style="line-height: normal; " />typedef <span id="siq44mc" class="hilite1" style="line-height: normal; ">boost</span>::shared_lock<rwmutex> readLock; <br style="line-height: normal; " />typedef <span id="4y44aig" class="hilite1" style="line-height: normal; ">boost</span>::uniq_lock<rwmutex> writeLock; <br style="line-height: normal; " /><br style="line-height: normal; " />rwmutex  _rwmutex; <br style="line-height: normal; " /><br style="line-height: normal; " />void readOnly() <br style="line-height: normal; " />{ <br style="line-height: normal; " />... <br style="line-height: normal; " />{ // 涓寸晫鍖?nbsp;<br style="line-height: normal; " />readLock rdlock<div style="display: inline-block; "></div></span><span id="sikqe2m" class="Apple-style-span" style="color: #333333; font-family: Arial; font-size: 13px; line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">(_rwmutex)</span><span id="u24ycu4" class="Apple-style-span" style="color: #333333; font-family: Arial; font-size: 13px; line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">; <br style="line-height: normal; " />... <br style="line-height: normal; " />do something <br style="line-height: normal; " />... <br style="line-height: normal; " />} <br style="line-height: normal; " />... <br style="line-height: normal; " />} <br style="line-height: normal; " /><br style="line-height: normal; " />void writeOnly() <br style="line-height: normal; " />{ <br style="line-height: normal; " />... <br style="line-height: normal; " />{ // 涓寸晫鍖?nbsp;<br style="line-height: normal; " />writeLock wlock(<div style="display: inline-block; "></div></span><span id="2owq4ow" class="Apple-style-span" style="color: #333333; font-family: Arial; font-size: 13px; line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">_rwmutex</span><span id="22424e4" class="Apple-style-span" style="color: #333333; font-family: Arial; font-size: 13px; line-height: 20px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; ">); <br style="line-height: normal; " />... <br style="line-height: normal; " />do something <br style="line-height: normal; " />... <br style="line-height: normal; " />} <br style="line-height: normal; " />... <br style="line-height: normal; " />} <br style="line-height: normal; " /></span></div><br /><br /><br /><br /><br /><br /><img src ="http://www.shnenglu.com/ioriiod0/aggbug/147135.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ioriiod0/" target="_blank">姹熸蹈鏈?/a> 2011-05-26 01:10 <a href="http://www.shnenglu.com/ioriiod0/archive/2011/05/26/147135.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.txhyhf.cn" target="_blank">久久精品国产精品亚洲艾草网美妙</a>| <a href="http://www.vulm.cn" target="_blank">久久国产精品波多野结衣AV</a>| <a href="http://www.789ff.cn" target="_blank">人妻无码精品久久亚瑟影视</a>| <a href="http://www.ccubaei.cn" target="_blank">亚洲AV日韩AV永久无码久久</a>| <a href="http://www.6kun.cn" target="_blank">精品免费tv久久久久久久</a>| <a href="http://www.sanmiaoyidai.cn" target="_blank">国产成人精品久久</a>| <a href="http://www.iteethle.cn" target="_blank">久久丫精品国产亚洲av不卡 </a>| <a href="http://www.cadcamcae.com.cn" target="_blank">久久久黄色大片</a>| <a href="http://www.sdyingdahb.cn" target="_blank">久久这里只有精品首页</a>| <a href="http://www.jiletu.cn" target="_blank">久久精品国产AV一区二区三区</a>| <a href="http://www.n29306.cn" target="_blank">国产精品久久波多野结衣</a>| <a href="http://www.haihuasuye.cn" target="_blank">一本久久综合亚洲鲁鲁五月天</a>| <a href="http://www.girlsp.cn" target="_blank">51久久夜色精品国产</a>| <a href="http://www.88ye.cn" target="_blank">99久久99这里只有免费费精品</a>| <a href="http://www.kzhg.net.cn" target="_blank">久久久久亚洲精品无码网址</a>| <a href="http://www.gajl.cn" target="_blank">色综合久久综精品</a>| <a href="http://www.dykh-tech.cn" target="_blank">久久亚洲精品国产亚洲老地址</a>| <a href="http://www.zjslzy.com.cn" target="_blank">日产精品久久久一区二区</a>| <a href="http://www.h9iet.cn" target="_blank">国产精品女同一区二区久久</a>| <a href="http://www.silverprice.net.cn" target="_blank">久久综合亚洲鲁鲁五月天</a>| <a href="http://www.3762g.cn" target="_blank">久久婷婷久久一区二区三区</a>| <a href="http://www.icaew.com.cn" target="_blank">狠狠色丁香久久婷婷综合_中</a>| <a href="http://www.cizbuk.cn" target="_blank">99精品国产在热久久</a>| <a href="http://www.sybcypx.cn" target="_blank">中文国产成人精品久久亚洲精品AⅤ无码精品</a>| <a href="http://www.668j.cn" target="_blank">午夜人妻久久久久久久久</a>| <a href="http://www.cn-ppg.cn" target="_blank">国产精品无码久久四虎</a>| <a href="http://www.zqz6251.cn" target="_blank">波多野结衣中文字幕久久</a>| <a href="http://www.024qixinyu.cn" target="_blank">精品久久久一二三区</a>| <a href="http://www.zawin.cn" target="_blank">色悠久久久久久久综合网</a>| <a href="http://www.yaott2.cn" target="_blank">久久国产高清一区二区三区</a>| <a href="http://www.pajiangxing.com.cn" target="_blank">日产精品久久久一区二区</a>| <a href="http://www.gdfw.org.cn" target="_blank">国产成人久久精品一区二区三区</a>| <a href="http://www.iconglass.com.cn" target="_blank">精品久久久久成人码免费动漫</a>| <a href="http://www.huochaipro.com.cn" target="_blank">久久精品国产99国产精品澳门</a>| <a href="http://www.uqbg.cn" target="_blank">欧美大香线蕉线伊人久久</a>| <a href="http://www.rainbows.net.cn" target="_blank">久久人人爽人人爽人人片AV高清</a>| <a href="http://www.blt5.cn" target="_blank">久久久久亚洲AV无码去区首</a>| <a href="http://www.n29306.cn" target="_blank">久久国产一片免费观看</a>| <a href="http://www.918jj.cn" target="_blank">久久国产乱子伦精品免费午夜</a>| <a href="http://www.yc9z.com.cn" target="_blank">亚洲国产精品久久久久网站 </a>| <a href="http://www.wzwsbz.cn" target="_blank">国产精品一久久香蕉产线看</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>