锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美涩涩视频,欧美成人一区在线,欧美揉bbbbb揉bbbbbhttp://www.shnenglu.com/yuanyajie/category/3707.html璁板綍鎵鎬濇墍鎯籌紝鏀惰棌鎵瑙佹墍闂伙拷? zh-cnThu, 07 May 2009 16:44:02 GMTThu, 07 May 2009 16:44:02 GMT60璇曠敤鏂扮増鏈琹uabindhttp://www.shnenglu.com/yuanyajie/archive/2009/05/07/82117.html娓呮簮娓告皯娓呮簮娓告皯Wed, 06 May 2009 16:46:00 GMThttp://www.shnenglu.com/yuanyajie/archive/2009/05/07/82117.htmlhttp://www.shnenglu.com/yuanyajie/comments/82117.htmlhttp://www.shnenglu.com/yuanyajie/archive/2009/05/07/82117.html#Feedback0http://www.shnenglu.com/yuanyajie/comments/commentRss/82117.htmlhttp://www.shnenglu.com/yuanyajie/services/trackbacks/82117.html鍏堟妸lua, luabind 緙栨垚闈欐佸簱錛岋紙涓嬪浘鍙槸debug,release綾諱技)錛?br>

鍋氬畬涔嬪悗鏁寸悊錛宭ua, luabind 浠dk 褰㈠紡緇勭粐濂斤紝鎴戞槸榪欐牱緇勭粐:
\luabind_build\sdk\luabind\include
\luabind_build\sdk\luabind\msvc-9.0-sp1\lib
\luabind_build\sdk\lua\include
\luabind_build\sdk\lua\msvc-9.0-sp1\lib
榪欐牱錛屾妸sdk涓殑涓滀笢淇濆瓨涓浠斤紝鏂逛究浠ュ悗浣跨敤銆傚啓涓涓狹FC灝忕▼搴忔祴璇?br>

 1 //鍏抽敭浠g爜
 2 //mfc class function
 3 void CMFC_LuaDlg::SetEditText(const char* text)
 4 {
 5     Edit_1.SetWindowText(text);
 6     UpdateData(FALSE);
 7 }
 8 //register
 9 luabind::module(L)
10     [
11     luabind::class_<CMFC_LuaDlg>("mfc_dlg")
12       .def"set_text",&CMFC_LuaDlg::SetEditText)
13     ];
14 //load lua file
15 if (0==luaL_dofile(L,filepath))
16     {
17         ret=true;
18     }
19 //run lua function
20  luabind::call_function<void>(L,"update_text",dlg);
21 
鑴氭湰鍐呭:
1 function update_text(dlg)
2    dlg:set_text("浣犲ソ錛屾榪庢潵鍒發ua 鑴氭湰涓栫晫")
3 end
榪愯緇撴灉錛?br>



娓呮簮娓告皯 2009-05-07 00:46 鍙戣〃璇勮
]]>
c++,瑕佺粏蹇冧笉鑳芥兂褰撶劧http://www.shnenglu.com/yuanyajie/archive/2009/05/06/82091.html娓呮簮娓告皯娓呮簮娓告皯Wed, 06 May 2009 13:09:00 GMThttp://www.shnenglu.com/yuanyajie/archive/2009/05/06/82091.htmlhttp://www.shnenglu.com/yuanyajie/comments/82091.htmlhttp://www.shnenglu.com/yuanyajie/archive/2009/05/06/82091.html#Feedback1http://www.shnenglu.com/yuanyajie/comments/commentRss/82091.htmlhttp://www.shnenglu.com/yuanyajie/services/trackbacks/82091.html
1 class Data;
2 Data* FindData();
3 void GetData(Data* dataPtr)
4 {
5     dataPtr=FindData();
6 }
7 Data* data=NULL;
8 GetData(data);
9 data->somefunction();
絎簩孌典唬鐮侊紝鏇村緱浠旂粏鐐?br>
 1 class A;
 2 class B;
 3 const * GetA();
 4 const * GetB();
 5 template<typename T>
 6 int GetSpecialValue(T* classPtr)
 7 {
 8    return  3721;
 9 }
10 
11 template<>
12 int GetSpecialValue<>(A* classPtr)
13 {
14    return  37;
15 }
16 template<>
17 int GetSpecialValue<>(B* classPtr)
18 {
19    return 21;
20 }
21 const * classPtr=GetA();
22 int ret=GetSpecialValue(classPtr);
23 cout<<ret<<endl; //out 3721! why not 37?
24 
25 
26 
絎竴孌電殑闂鍦ㄤ簬鐪嬪埌鎸囬拡鎯沖綋鐒惰涓烘槸鍦板潃錛宒ata 鍙互甯﹀洖鍙嶅洖鍊鹼紝鍏跺疄鍥犱負榪欓噷鏄間紶閫掞紝瀹炲弬data鎶婅嚜宸辯殑鍊艱祴緇欎簡dataPtr,dataPtr鍚庢潵紜疄浠嶧indData()寰楀埌浜嗘兂瑕佺殑鍊鹼紝浣嗚繖瀵逛竴鐐瑰獎鍝嶄篃娌℃湁錛屾墍浠ュ嚱鏁拌繑鍥炴椂錛宒ata鐨勫兼病鏈夊彂鐢熷彉鍖栵紝涔熷氨鏄病鏈夊甫鍥炴兂瑕佺殑鍊箋?br>鍙涓嶆兂褰撶劧錛屼粩緇嗕竴鎯沖氨鏄庣櫧浜嗭紝瑙e喅鍔炴硶寰堢畝鍗曪細
1  void GetData(Data*& dataPtr)
2 4 {
3 5     dataPtr=FindData();
4 6 }
絎簩孌電殑闂鏄病鏈夋敞鎰忓埌閭d釜const, T*  鍜?T const* 鏄笉涓鏍風殑錛屼笉鑳藉畬鍏ㄥ尮閰嶏紝鎵浠ヤ笉浼氭壘鍒板A綾誨瀷鐨勭壒鍖栫増鏈?瑙e喅鍔炴硶鍙互榪欐牱錛?br>
 1 template<typename T>
 2 int GetSpecialValue(T const* classPtr)
 3 {
 4    return  3721;
 5 }
 6 
 7 template<>
 8 int GetSpecialValue<>(A const* classPtr)
 9 {
10    return  37;
11 }
12 template<>
13 int GetSpecialValue<>(B const* classPtr)
14 {
15    return 21;
16 }
鑳借繃榪欎袱涓皬渚嬪瓙灝卞彲浠ョ煡閬擄紝C++緇嗚妭寰堝錛岃浠旂粏錛屼笉鑳芥兂褰撶劧銆?br>

娓呮簮娓告皯 2009-05-06 21:09 鍙戣〃璇勮
]]>
錛堢綉鎽樺ソ鏂囷級C++澶氭佹妧鏈殑瀹炵幇鍜屽弽鎬?/title><link>http://www.shnenglu.com/yuanyajie/archive/2007/11/09/36260.html</link><dc:creator>娓呮簮娓告皯</dc:creator><author>娓呮簮娓告皯</author><pubDate>Fri, 09 Nov 2007 14:32:00 GMT</pubDate><guid>http://www.shnenglu.com/yuanyajie/archive/2007/11/09/36260.html</guid><wfw:comment>http://www.shnenglu.com/yuanyajie/comments/36260.html</wfw:comment><comments>http://www.shnenglu.com/yuanyajie/archive/2007/11/09/36260.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/yuanyajie/comments/commentRss/36260.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/yuanyajie/services/trackbacks/36260.html</trackback:ping><description><![CDATA[     鎽樿:   <a href='http://www.shnenglu.com/yuanyajie/archive/2007/11/09/36260.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/yuanyajie/aggbug/36260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/yuanyajie/" target="_blank">娓呮簮娓告皯</a> 2007-11-09 22:32 <a href="http://www.shnenglu.com/yuanyajie/archive/2007/11/09/36260.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>錛堢綉鎽樺ソ鏂囷級鍏充簬閲庢寚閽?/title><link>http://www.shnenglu.com/yuanyajie/archive/2007/11/09/36259.html</link><dc:creator>娓呮簮娓告皯</dc:creator><author>娓呮簮娓告皯</author><pubDate>Fri, 09 Nov 2007 14:21:00 GMT</pubDate><guid>http://www.shnenglu.com/yuanyajie/archive/2007/11/09/36259.html</guid><wfw:comment>http://www.shnenglu.com/yuanyajie/comments/36259.html</wfw:comment><comments>http://www.shnenglu.com/yuanyajie/archive/2007/11/09/36259.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/yuanyajie/comments/commentRss/36259.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/yuanyajie/services/trackbacks/36259.html</trackback:ping><description><![CDATA[     鎽樿:   <a href='http://www.shnenglu.com/yuanyajie/archive/2007/11/09/36259.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/yuanyajie/aggbug/36259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/yuanyajie/" target="_blank">娓呮簮娓告皯</a> 2007-11-09 22:21 <a href="http://www.shnenglu.com/yuanyajie/archive/2007/11/09/36259.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>緗戞憳錛氫竴綃囦粙緇岲irectX 10 鐨勬枃绔?/title><link>http://www.shnenglu.com/yuanyajie/archive/2007/05/31/25201.html</link><dc:creator>娓呮簮娓告皯</dc:creator><author>娓呮簮娓告皯</author><pubDate>Thu, 31 May 2007 07:11:00 GMT</pubDate><guid>http://www.shnenglu.com/yuanyajie/archive/2007/05/31/25201.html</guid><wfw:comment>http://www.shnenglu.com/yuanyajie/comments/25201.html</wfw:comment><comments>http://www.shnenglu.com/yuanyajie/archive/2007/05/31/25201.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/yuanyajie/comments/commentRss/25201.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/yuanyajie/services/trackbacks/25201.html</trackback:ping><description><![CDATA[Microsoft鍙戝竷鐨凞irectX 10浠h〃浜嗚嚜浠庡彲緙栫▼Shader鍑虹幇浠ユ潵鍦?D API鏂歸潰鐨勬渶宸ㄥぇ鐨勮繘姝ャ傞氳繃涓鐣劚鑳庢崲楠ㄨ埇鐨勯噸寤猴紝DirectX 10灞曠幇鍑轟竴緋誨垪闈炲父閱掔洰鐨勬柊鐗規э紝鍖呮嫭楂樺害浼樺寲鐨勮繍琛屾椂錛屽己澶х殑Geometry Shader錛岀汗鐞嗘暟緇勭瓑絳夛紝榪欎簺鐗規у皢寮曢PC瀹炴椂涓夌淮鍥懼艦榪涘叆涓涓叏鏂扮殑涓栫晫銆? <h2>DirectX 鍙戝睍綆鍙?/h2> <p>銆銆鍦ㄨ繃鍘葷殑鍗佸勾涓紝<a ><u><font color=#0000ff>DirectX</font></u></a>宸茬粡紼蟲鎴愪負浜哅icrosoft Windows騫沖彴涓婅繘琛屾父鎴忓紑鍙戠殑棣栭堿PI銆傛瘡涓浠g殑DirectX閮藉甫鏉ュ鏂扮殑鍥懼艦紜歡鐗規х殑鏀寔錛屽洜姝ゆ瘡嬈¢兘鑳藉府鍔╂父鎴忓紑鍙戣呬滑榪堝嚭鎯婁漢鐨勪竴姝ャ?/p> <p>銆銆寰蔣DirectX API(Application Programming interface :搴旂敤紼嬪簭鐣岄潰) 鏈鏃╁彂甯冧簬1995騫達紝鍏惰璁$洰鏍囨槸涓篧indows騫沖彴杞歡寮鍙戜漢鍛樻彁渚涗竴涓洿綆渚跨殑閽堝澶氬獟浣撳拰娓告垙搴旂敤緙栫▼鐨勬爣鍑嗘帴鍙c?/p> <p>銆銆鍦―irectX鍑哄彴錛屽紑鍙戣呴拡瀵歸煶棰戙佽棰戠瓑鐨勬搷浣滃繀欏誨熀浜庣‖浠惰繘琛岋紝鈥斺斿綋鐒訛紝鍩轟簬OpenGL鑳藉鍦ㄥ緢澶х▼搴忎笂鍑忚交宸ヤ綔閲忥紝浣哋penGL鑾峰緱鐨勬敮鎸佹樉鐒惰繙榪滀笉澶熴傗斺旇屾樉鍗°佸0鍗$瓑鐨勪駭鍝佺綾諱紬澶氾紝瑕佺紪鍐欎竴嬈捐兘榪愯鍦ㄦ墍鏈夊鉤鍙頒笂鐨勬父鎴忕畝鐩存槸涓浠跺櫓姊﹁埇鐨勫伐浣溿?/p> <p>銆銆閫氳繃鎻愪緵涓緋誨垪鐨勯拡瀵瑰濯掍綋搴旂敤鐨凙PI錛屽鍥懼艦(鍖呮嫭2D涓?D搴旂敤)銆侀煶棰戞垨杈撳叆璁懼絳夛紝DirectX鎻愪緵浜嗕竴鏁村鐨勫濯掍綋鎺ュ彛鏂規錛岃繖鍙互璁╁紑鍙戣呮牴鎹瓵PI緙栧啓鐩稿簲鐨勮蔣浠剁▼搴忥紝鑰屼笉蹇呰冭檻鍏蜂綋鐨勭‖浠訛紝紜歡鐨勫樊鍒ф樉寰楁棤瓚寵交閲嶏紝緙栫▼浜哄憳寰椾互鏇存湁鏁堢巼鐨勫紑鍙戝悇縐嶅濯掍綋銆佹父鎴忚蔣浠躲?/p> <p>銆銆褰撶劧錛孌irectX鐨勫彂灞曞茍涓嶆槸涓甯嗛欏虹殑錛屾渶鍒濈殑鐗堟湰榪滆皥涓嶄笂紼沖畾銆傘</p> <p> <table class=atable cellSpacing=1 cellPadding=1 width=440 align=center> <tbody> <tr class=tbhead> <td>鐗堟湰</td> <td>鎿嶄綔緋葷粺</td> <td>鍙戝竷鏃ユ湡</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 1.0</td> <td>Windows 95a</td> <td>9/30/95</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 2.0/2.0a</td> <td>Windows 95OSR2/NT4.0</td> <td>6/5/96</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 3.0/3.0a</td> <td>Windows NT 4.0 SP3</td> <td>9/15/96</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 4.0</td> <td></td> <td>鏈彂甯?/td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 5.0</td> <td>Windows NT 4.0/Beta for NT 5.0</td> <td>7/16/97</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 5.1</td> <td>Windows 95/98/NT4.0</td> <td>12/1/97</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 5.2</td> <td>Windows 95</td> <td>5/5/98</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 6.0</td> <td>Windows 98/NT4.0</td> <td>8/7/98</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 6.1</td> <td>Windows 95/98/98SE</td> <td>2/3/99</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 7.0</td> <td>Windows 95/98/98SE/2000</td> <td>9/22/99</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 7.0a</td> <td>Windows 95/98/98SE/2000</td> <td>9/99</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 7.1</td> <td>Windows 95/98/98SE/ME/2000</td> <td>9/16/99</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 8.0/8.0a</td> <td>Windows 95/98/98SE/ME/2000</td> <td>9/30/2000</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 8.1</td> <td>Windows 95/98/98SE/ME/2000/XP</td> <td>11/12/01</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 9 <br>Shader Model 2.0</td> <td>Windows 95/98/98SE/ME/2000/XP</td> <td>12/19/2002</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 9 <br>Shader Model 2.0b</td> <td>Windows 98/98SE/ME/2000/XP</td> <td>8/13/2003</td> </tr> <tr class=tbnmal> <td class=lbt>DirectX 9<br>Shader Model 3.0</td> <td>Windows 98/98SE/ME/2000/XP</td> <td>8/9/2004</td> </tr> </tbody> </table> </p> <h2>DirectX 3D鐨勫彂灞?/h2> <p>銆銆DirectX涓簲鐢ㄥ湪3D鍥懼艦鏂歸潰鐨勭壒瀹欴irectX API鍗矰irect3D錛岃繖涔熸槸DirectX涓渶閲嶈鐨勯儴鍒嗐備笉榪囷紝DirectX 3D寰楀埌騫挎硾搴旂敤鏄湪DirectX 6.0涔嬪悗錛?/p> <p>銆銆<strong>DirectX 6.0</strong>錛氬姞鍏ヤ簡鍙岀嚎鎬ц繃婊ゃ佷笁綰挎ц繃婊ょ瓑浼樺寲3D鍥懼儚璐ㄩ噺鐨勬妧鏈紝鍔犲叆鐜褰卞皠鍑瑰嚫璐村浘錛屼嬌3D娓告垙鐨勭敾闈㈡洿鍏鋒湁鐪熷疄鎰熴?/p> <p>銆銆<strong>DirectX 7.0</strong>錛氭渶澶х殑鐗硅壊灝辨槸鏀寔浜員&L錛屼腑鏂囧悕縐版槸“鍧愭爣杞崲鍜屽厜婧?#8221;錛?D娓告垙涓潗鏍囧拰鐏厜鐨勮漿鎹㈠伐浣滀粠姝ょ敱CPU杞氦緇欎簡GPU錛屾瘮DX6.1鎬ц兘鎻愬崌20%銆傝繖涔熸垚灝變簡nVIDIA GeForce 256涓嶢Ti Radeon 256鐨勮緣鐓岋紝浠?DFX褰誨簳閫鍑哄競鍦虹珵浜夈?/p> <p>銆銆<strong>DirectX 7.0a</strong>錛氬寮轟簡鍔涘弽棣堟父鎴忔帶鍒惰澶囩殑鎬ц兘鍜屽吋瀹規с?/p> <p>銆銆<strong>DirectX 7.1</strong>錛氫笌Windows Millennium涓鍚屽彂甯冦?/p> <p>銆銆<strong>DirectX 8.0/8.0a</strong>錛氭敮鎸丼hader Model 1.0鍜?.1錛屼粠姝ゅ湪鏄懼崱涓紩鍏ュ彲緙栫▼鍍忕礌鐫鑹插櫒(Pixel Shaders)鍜岄《鐐圭潃鑹插櫒(Vertex Shaders)鐨勬蹇碉紝鍚屾椂搴旂敤鍦╔box娓告垙鏈轟腑銆傚悓紜歡T&L浠呬粎瀹炵幇鐨勫浐瀹氬厜褰辮漿鎹㈢浉姣旓紝VS鍜孭S鍗曞厓鐨勭伒媧繪ф洿澶э紝瀹冧嬌GPU鐪熸鎴愪負浜嗗彲緙栫▼鐨勫鐞嗗櫒銆?/p> <p>銆銆<strong>DirectX 8.1</strong>錛?Pixel Shader鍗囩駭鍒?.2銆?.3銆?.4鐗堬紝鍙互鏀寔鏈楂樻瘡鏃墮挓28鎸囦護鎵ц錛屽叾涓?.4鐗堝綋鏃朵粎ATi Radeon 8500鏄懼崱鏀寔銆?/p> <p>銆銆<strong>DirectX 9.0 Shader Model 2.0</strong>錛?SM2.0鐨剆hader鎬ц兘鏇村己錛屾敮鎸佹渶楂?6鎸囦護鐨刾ixel shader闀垮害錛屽悓鏃禗irectPlay鍜屼竴浜涢煶棰戞柟闈篃鏈夊ぇ騫呮彁鍗囥?/p> <p>銆銆<strong>DirectX 9.0 Pixel Shader 2.0b</strong>錛?ATI Radeon X600/700/800緋誨垪鏄懼崱棣栧厛閲囩撼錛屽紑濮嬫敮鎸佹洿澶氭寚浠?鏈楂?536)鍜屾洿澶氫復鏃跺瘎瀛樺櫒(32鐩告瘮涔嬪墠涓?2)錛屽悓鏃惰繕鍔犲叆鏂扮殑璐撮潰瀵勫瓨鍣?facing register)鍜屽嚑浣曞疄渚?geometry instancing)鐨勬敮鎸併?/p> <p>銆銆<strong>DirectX 9.0 Shader Model 3.0</strong>錛氭敮鎸佹洿澶氭寚浠わ紝鏀寔鎸囦護鐨勬祦閲忔帶鍒跺拰鍔ㄦ佸垎鏀紝浠庤屼嬌寰楃紪紼嬩漢鍛樺彲浠ュ湪shaders涓姞鍏ュ驚鐜搷浣滐紝浣垮緱緙栫▼鏇村姞瀹規槗錛岄嬈¤Geforce 6800鏄懼崱閲囩敤銆?/p> <p>銆銆浠嶥irectX鐨勫彂灞曞彶涓垜浠彲浠ョ湅鍒幫紝寰蔣鐨?D API鍜岀‖浠朵竴鍚屽彂灞曪紝鏂扮‖浠跺甫鏉ユ柊鐨凞X鐗規э紝鏂扮殑DX鐗規у姞閫熺‖浠剁殑鍙戝睍錛屽湪DirectX10涓婇潰錛屽張鏄竴涓?D鍥懼艦鍙戝睍鐨勬柊澧冪晫銆?/p> <h2>DirectX 10鐨勬灦鏋勪紭鍔?/h2> <p>銆銆DirectX涔嬫墍浠ュ湪騫垮ぇ鐨勫紑鍙戣呬腑嫻佽錛屾槸寰楃泭浜庡畠鐨勭畝鍗曟槗鐢ㄥ拰涓板瘜鐨勫姛鑳界壒鎬с傜劧鑰岋紝DirectX涓鐩磋涓涓富瑕佺殑闂鎵鍥版壈錛岄偅灝辨槸楂楥PU璐熻澆銆?/p> <p>銆銆鍦ㄥ浘褰㈢紪紼婣PI鍑虹幇涔嬪墠錛?D搴旂敤紼嬪簭鐩存帴鍚戝浘褰㈢‖浠跺彂閫佸懡浠ゆ潵瀹屾垚鍥懼艦鐨勭粯鍒跺伐浣溿傝櫧鐒惰繖鏍峰紑鍙戝伐浣滄瘮杈冪箒閲嶏紝浣嗙‖浠舵晥鐜囧垯鑳藉湪寰堝ぇ紼嬪害涓婂緱鍒頒繚璇併?/p> <p>銆銆鑰屽DirectX鍜孫penGL榪欐牱鐨勫浘褰PI鍒欐槸閫氳繃鍦ㄥ浘褰㈢‖浠跺拰搴旂敤紼嬪簭涔嬮棿鏋惰搗浜嗕竴涓腑闂村眰錛岃繖鏍鳳紝搴旂敤紼嬪簭鍙互浣跨敤緇熶竴鐨勫浘褰㈢紪紼嬩唬鐮佹潵瀹屾垚瀵瑰簳灞傜‖浠剁殑鎿嶄綔錛屽皢紼嬪簭鍛樹滑浠庝笌澶ч噺鐨勫浘褰㈢‖浠朵氦浜掔殑鎭舵ⅵ涓В鏁戝嚭鏉ャ備絾鏄紝榪欎篃閫犳垚浜嗘瘡嬈irectX浠庡簲鐢ㄧ▼搴忛偅閲屾帴鏀跺埌涓鏉″懡浠ゆ椂錛屽氨蹇呴』鍏堝榪欐潯鍛戒護榪涜鍒嗘瀽鍜屽鐞嗭紝鍐嶅悜鍥懼艦紜歡鍙戦佺浉瀵瑰簲鐨勭‖浠跺懡浠ゃ傜敱浜庤繖涓垎鏋愬拰澶勭悊鐨勮繃紼嬬敱CPU瀹屾垚錛岄犳垚浜嗘瘡涓鏉?D緇樺浘鍛戒護閮戒細甯︽潵CPU鐨勮礋杞姐?/p> <p>銆銆浠庢妧鏈搴︼紝榪欑CPU璐熻澆緇?D鍥捐薄甯︽潵涓や釜璐熼潰褰卞搷錛氶鍏堬紝闄愬埗浜嗙敾闈腑鍙互鍚屾椂緇樺埗鐨勭墿浣撴暟閲忥紱鍏舵錛岄檺鍒朵簡鍙互鍦ㄤ竴涓満鏅腑浣跨敤鐨勭嫭绔嬬殑鐗規晥鐨勬暟閲忋傝繖灝變嬌寰楁父鎴忕敾闈腑鐨勭粏鑺傛暟閲忓彈鍒頒簡寰堝ぇ鐨勯檺鍒訛紝鑰屽浘鍍忓叿鏈夌湡瀹炴劅鐨勪富瑕佽姹備究鏄赴瀵岀殑緇嗚妭銆?/p> <p>銆銆DirectX 10鐨勪富瑕佷紭鍔夸究鏄渶澶х▼搴﹀湴闄嶄綆浜咰PU璐熻澆錛屼富瑕侀氳繃涓変釜閫斿緞鏉ヨ揪鍒拌繖涓洰鐨勶細絎竴錛屼慨鏀笰PI鏍稿績錛屼嬌寰楃粯鍒剁墿浣撳拰鍒囨崲鏉愯川鐗規晥鏃剁殑娑堣楅檷浣庯紝鎻愰珮緇樺浘鏁堢巼錛涚浜岋紝寮曞叆鏂扮殑鏈哄埗錛岄檷浣庡浘褰㈣繍綆楁搷浣滃CPU鐨勪緷璧栨э紝浣挎洿澶氱殑榪愮畻鍦℅PU涓畬鎴愶紱絎笁錛屼嬌澶ч噺鐨勭墿浣撳彲浠ラ氳繃璋冪敤鍗曟潯DirectX緇樺埗鍛戒護榪涜鎵歸噺緇樺埗銆?/p> <p>銆銆涓嬮潰鎴戜滑灝辨潵浠旂粏鐨勭湅涓涓嬭繖涓夌鏂瑰紡錛?/p> <p>銆銆<strong>鎻愰珮緇樺浘鏁堢巼</strong></p> <p>銆銆鍦―irectX 10涓紝瀵逛笂浠irectX鐗堟湰涓笁緇存暟鎹拰緇樺埗鍛戒護鐨勯獙璇佽繃紼嬭繘琛屼簡寰堝ぇ紼嬪害鐨勪慨鏀廣傛墍璋撲笁緇存暟鎹拰鍛戒護鐨勯獙璇侊紝鏄寚鍦―irectX緇樺埗鍥懼艦涔嬪墠錛屽浼犵粰瀹冪殑鍥懼艦鏁版嵁鍜岀粯鍒跺懡浠よ繘琛屾牸寮忓拰鏁版嵁瀹屾暣鎬х殑媯鏌ワ紝浠ヤ繚璇佸畠浠閫佸埌鍥懼艦紜歡鏃朵笉浼氬鑷寸‖浠跺嚭闂錛涜繖鏄緢蹇呰鐨勪竴姝ユ搷浣滐紝浣嗘槸涓嶅垢鐨勬槸榪欎細甯︽潵寰堝ぇ鐨勬ц兘寮閿銆?/p> <p><img class=artimg alt="DirectX 9 vs. DirectX 10" src="http://www.highdiy.com/upimg/uploadimg/20061112/055430192.gif"></p> <p>銆銆浠庝笂琛ㄦ垜浠彲浠ュ緢瀹規槗鐨勭湅鍑猴紝鍦―irectX 9涓紝姣忔緇樺埗涓甯х敾闈箣鍓嶏紝閮戒細瀵瑰嵆灝嗕嬌鐢ㄧ殑鐩稿叧鏁版嵁榪涜涓嬈¢獙璇併傝孌irectX 10涓紝浠呭綋榪欎簺鏁版嵁琚垱寤哄悗楠岃瘉涓嬈°傝繖寰堟槑鏄炬槸鍙互澶уぇ鎻愰珮娓告垙榪涜涓殑鏁堢巼鐨勩?/p> <strong>闄嶄綆鍥懼艦榪愮畻瀵笴PU鐨勪緷璧?/strong> <p>銆銆鍦ㄩ檷浣庡浘褰㈣繍綆楀CPU鐨勪緷璧栨柟闈紝DirectX 10 寮曞叆鐨勪笁涓噸瑕佹満鍒跺氨鏄細綰圭悊闃靛垪(texture arrays)銆佺粯鍒墮嫻?(predicated draw)鍜屾祦寮忚緭鍑?stream out)銆備笉瑕佽榪欎笁涓櫐娑╃殑鍚嶈瘝鍚撳掞紝瀹為檯涓婂畠浠槸涓変釜涓嶉毦鐞嗚В鐨勬満鍒躲?/p> <p>銆銆<em>綰圭悊闃靛垪</em></p> <p>銆銆浼犵粺鐨凞irectX鍦ㄥ寮犵汗鐞嗕腑榪涜鍒囨崲鐨勬搷浣滄槸縐嶅緢緇機PU甯︽潵寰堝ぇ鍘嬪姏鐨勬搷浣滐紝鍥犱負姣忓垏鎹竴嬈★紝閮借璋冪敤涓嬈irectX鐨凙PI鍑芥暟銆傝屾瘡緇樺埗涓涓嬌鐢ㄦ柊綰圭悊鐨勭墿浣擄紝灝辮榪涜涓嬈¤繖鏍風殑鍒囨崲鎿嶄綔錛涙湁鏃朵負浜嗗疄鐜扮壒孌婄殑鏉愯川鐗規晥錛岀粯鍒朵竴涓墿浣撴椂鍙兘灝辮鍒囨崲濂藉嚑嬈$汗鐞嗭紝寮閿寰堝ぇ銆?/p> <p>銆銆鎵浠ワ紝涔嬪墠娓告垙涓粡甯鎬細鍑虹幇灝嗗ぇ閲忕殑灝忕汗鐞嗘嫾鍚堝埌涓寮犲ぇ鐨勭汗鐞嗕腑錛岄氳繃緇欎笉鍚岀殑涓夌淮鐗╀綋鍒嗛厤榪欏紶澶х汗鐞嗙殑涓嶅悓灞閮ㄧ殑鏂瑰紡錛屼互鏈熷噺灝戠汗鐞嗗垏鎹紝鎻愰珮娓告垙榪愯鏁堢巼銆傝繖縐嶆柟寮忓疄鐜拌搗鏉ョ浉褰撳鏉傦紝鑰屼笖DirectX 9涓綰圭悊鐨勫昂瀵哥殑闄愬埗鏄?048×4048鍍忕礌錛屼篃灝辨槸璇達紝濡傛灉瑕佸涓嬫洿澶氱殑灝忕汗鐞嗗潡錛屽彲鑳藉氨寰楀姞杞藉緢澶氬紶榪欐牱鐨勫ぇ綰圭悊銆?/p> <p>銆銆DirectX 10寮曞叆鐨勬柊鐨勭汗鐞嗛樀鍒楁満鏋勶紝灝嗗厑璁稿湪涓涓敱鏄懼崱緇存姢鐨勯樀鍒椾腑瀹圭撼512寮犲崟鐙殑綰圭悊錛岃屼笖錛屽湪shader紼嬪簭涓彲浠ヤ嬌鐢ㄤ竴鏉℃柊鐨勬寚浠ゆ潵鑾峰彇榪欎釜闃靛垪涓殑浠繪剰涓寮犵汗鐞嗐傝岃繖縐峴hader鎸囦護鏄繍琛屽湪GPU涓殑錛涜繖鏍鳳紝灝辨妸鍘熸潵瑕佹秷鑰楀緢澶欳PU鏃墮棿鐨勭汗鐞嗗垏鎹㈠伐浣滆交鏉懼湴杞粰浜咷PU銆傜敱浜庣汗鐞嗕竴鑸槸鐩存帴鏀懼湪鏄懼瓨涓殑錛屽洜姝や互榪欐牱鐨勬柟寮忥紝灝嗗伐浣滀氦涓庡拰鏄懼瓨涓鍚屼綅浜庢樉鍗′笂鐨凣PU鏉ュ畬鎴愭洿鏈夋晥鐜囥傚浠婏紝鍦―irectX 10涓紝鍙涓寮濮嬭緗ソ綰圭悊闃靛垪涓殑綰圭悊錛岀劧鍚庢瘡嬈$粯鍒朵竴涓墿浣撴椂涓哄畠鎸囧畾涓涓汗鐞嗙殑绱㈠紩鍙鳳紝騫跺悓鐗╀綋涓夌淮鏁版嵁涓璧蜂紶閫掑埌shader涓紝灝卞彲浠ユ斁蹇冪殑璁〨PU鏉ョ粰鐗╀綋閫夌汗鐞嗕簡銆?/p> <p>銆銆<em>緇樺埗棰勬祴</em></p> <p>銆銆鍦ㄤ竴鑸殑涓夌淮鍦烘櫙閲岋紝寰堝鐗╀綋閮芥槸瀹屽叏琚埆鐨勭墿浣撴尅鍦ㄥ悗闈㈢殑銆傝繖鏃跺欏鏋滆鏄懼崱緇樺埗榪欎簺鐗╀綋灝辨槸鐧借垂鍔涙皵銆傚敖綆¢珮綰х殑GPU鍙互閫氳繃紜歡綆楁硶灝嗗満鏅敾闈腑琚尅浣忕殑鍍忕礌(娉ㄦ剰鏄儚绱?棰勫厛鍓旈櫎錛屼絾鏄粛鐒朵細鏈夊緢澶氫笉搴旇繘琛岀殑澶氫綑榪愮畻銆備緥濡傦紝涓涓畬鍏ㄨ鎸′綇鐨勫鏉傜殑瑙掕壊妯″瀷錛屽畠鐨勮韓涓婂彲鑳芥湁鍑犲崈涓《鐐癸紝闇瑕佸仛澶嶆潅鐨勯楠肩毊鑲ゅ姩鐢誨鐞嗐侀《鐐瑰厜鐓ц繍綆楃瓑絳夛紝鐒惰岋紝GPU鏄湪澶勭悊瀹岃繖浜涢《鐐逛箣鍚庯紝騫惰鎶婅繖涓鑹叉ā鍨嬩竴涓儚绱犱竴涓儚绱犲湴鐢誨埌鐢婚潰涓椂錛屾墠寮濮嬪垽鏂瘡涓儚绱犳槸鍚﹂渶瑕佺敾錛岃屽綋鎵鏈夌殑鍍忕礌閮借鍓旈櫎浜嗘椂錛屼箣鍓嶅仛鐨勯《鐐瑰鐞嗕篃灝卞叏鐧借垂浜嗐傚湪DirectX 10涓殑緇樺埗棰勬祴渚挎鏄拡瀵硅繖縐嶆儏鍐電殑瑙e喅錛岀畝璦涔嬶紝緇樺埗棰勬祴閫氳繃鐢ㄤ竴涓彲浠ヤ唬琛ㄦ煇涓鏉傜墿浣撶殑綆鍗曠墿浣撴潵鍒ゆ柇榪欎釜鐗╀綋鏄惁琚叏閮ㄦ尅浣忎簡錛屼緥濡傜敤涓涓彲浠ョ僵浣忓垰鎵嶉偅涓鑹茬殑澶х洅瀛愶紝褰撶粯鍒惰繖涓洅瀛愭椂錛屽鏋滃彂鐜版墍鏈夌殑鍍忕礌閮借灞忚斀鎺変簡錛屼篃鍗蟲槸璇磋繖涓洅瀛愯偗瀹氬畬鍏ㄧ湅涓嶈錛岄偅涔堬紝閲岄潰鐨勮鑹茬粯鍒跺寘鎷楠肩毊鑲よ繍綆楃瓑涔嬬被鐨勬搷浣滀究瀹屾垚涓嶅繀榪涜銆傝屼竴涓洅瀛愰《澶氭湁鍏釜欏剁偣錛岀浉姣斿鐞嗗嚑鍗冧釜欏剁偣錛屽紑閿灝忓緱澶氥?/p> <p>銆銆鍙﹀錛屼互鍓嶈繖涓楠や腑鏈変簺鐪熻繍綆椾篃闇CPU瀹屾垚鐨勶紝鍦―irectX 10涓紝宸茬粡瀹屽叏浜ょ敱GPU鏉ュ仛錛岃繖涔熷彲浠ュ湪涓瀹氱▼搴︿笂鍑忚交CPU鐨勫帇鍔涖?br><em>鏁版嵁嫻佸紡杈撳嚭</em></p> <p>銆銆鏁版嵁嫻佸紡杈撳嚭涔熸槸DirectX 10鐨勯噸瑕佺壒鎬э紝瀹冨厑璁窯PU涓婄殑Vertex shader鎴朑eometry shader鍚戞樉瀛樹腑娣誨姞鏁版嵁錛岃岃繖鍦ㄤ互寰鐨剉ertex shader涓槸涓嶅彲鑳界殑銆?/p> <p>銆銆鍦ㄤ箣鍓嶇殑DirectX鐗堟湰涓紝vertex shader鍙兘璇誨彇鏄懼瓨涓凡鏈夌殑欏剁偣鏁版嵁錛涜孌irectX 10涓紩鍏ョ殑鏂扮殑Geometry shader錛屼笉浣嗚兘璇誨彇鏄懼瓨涓殑欏剁偣鏁版嵁銆佸嚑浣?鐐廣佺嚎孌點佷笁瑙掑艦)鏁版嵁錛岃繕鍙互鐢熸垚鏂扮殑鍑犱綍鏁版嵁鏀懼洖鏄懼瓨銆?/p> <strong>鎵歸噺緇樺埗</strong> <p>銆銆鍦―irectX 9涓紝瀵規覆鏌撶姸鎬佺殑綆$悊涓鐩存槸涓崄鍒嗕俊璧栦簬CPU榪愮畻鑳藉姏鐨勬搷浣溿傛墍璋撴覆鏌撶姸鎬侊紝鏄寚鏄懼崱榪涜涓嬈$粯鍒舵搷浣滄椂鎵闇瑕佽緗殑鍚勭鏁版嵁鍜屽弬鏁般備緥濡傦紝瑕佺粯鍒朵竴涓漢鐗╄鑹詫紝灝遍渶瑕佸厛璁劇疆浠栫殑鍑犱綍妯″瀷鏁版嵁鐨勬暟鎹牸寮忋佺汗鐞嗚繃婊ゆā寮忋佸崐閫忔槑娣峰悎妯″紡絳夌瓑錛屾瘡璁劇疆涓欏癸紝閮借璋冪敤涓嬈irectX API錛屽崰鐢ㄥぇ閲廋PU鏃墮棿錛屾瀬澶х殑綰︽潫浜嗘覆鏌撶殑鎬ц兘銆?/p> <p>銆銆涓轟簡浣胯繖浜涙搷浣滆兘澶熸壒閲忕殑榪涜錛孌irectX 10涓紩鍏ヤ簡涓や釜鏂扮殑緇撴瀯鈥斺旂姸鎬佸璞?state object)鍜屽父閲忕紦鍐?constant buffers)銆?/p> <p>銆銆鐘舵佸璞″氨鏄皢浠ュ墠鐨勯浂鏁g姸鎬佹寜鐓у姛鑳藉綊緇撲負鍑犱釜鏁翠綋錛岃繖鏍鳳紝褰撹璁劇疆涓緋誨垪鐩稿叧鐘舵佹椂錛屾棤闇涓烘瘡涓涓姸鎬佹潵璋冪敤涓嬈irectX API,鍙渶瑕佽皟鐢ㄤ竴嬈″皢榪欎簺鐘舵佺粺緇熻緗埌鏄懼崱涓幓銆?/p> <p>銆銆鑰屽父閲忕紦鍐叉槸鍙︿竴涓崄鍒嗘湁鎰忎箟鐨勬満鍒躲傚湪緇樺埗妯″瀷鍓嶇殑鍑嗗宸ヤ綔涓紝娓叉煋鐘舵佺殑璁劇疆鍙槸涓灝忛儴鍒嗐傝繕鏄嬁緇樺埗浜虹墿瑙掕壊鏉ヨ錛岃兘鐓т寒榪欎釜浜虹殑鍏夋簮鐨勯鑹層佷綅緗佺被鍨嬨佽寖鍥寸瓑絳夛紝閮借鎻愬墠璁劇粰鏄懼崱錛涗負浜嗛氳繃楠ㄩ鏉ュ甫鍔ㄤ粬鐨勭毊鑲ゅ仛鍑哄Э鍔匡紝榪樿璁劇疆楠ㄩ鐨勪綅緗俊鎭瓑絳夛紝鑰岃繖浜涗笢瑗夸富瑕侀兘鏄氳繃GPU涓殑甯擱噺瀵勫瓨鍣?constant registers)鏉ヤ紶閫掔粰瀹冪殑銆傛瘡涓父閲忓瘎瀛樺櫒鍙互瀛樺偍涓涓?緇寸殑嫻偣鍨嬪悜閲?鍗沖洓涓誕鐐規暟)銆傚父閲忓瘎瀛樺櫒鏄父鎴忕▼搴忓悜GPU杈撳叆娓告垙鍦烘櫙涓暟鎹殑閲嶈閫斿緞銆?/p> <p>銆銆鍦―irectX 9涓紝榪欑甯擱噺瀵勫瓨鍣ㄧ殑鏁伴噺鏄崄鍒嗘湁闄愮殑錛岃屼笖姣忔鏇存柊涓涓瘎瀛樺櫒錛岄兘闇瑕佽皟鐢ㄤ竴嬈irectX API鍑芥暟銆侱irectX 10閫氳繃浣跨敤甯擱噺緙撳啿(constant buffer)榪欑緇撴瀯錛屽湪姣忎釜constant buffer涓兘鍙互瀹圭撼4096涓父閲忥紝鑰屼笖鍙渶璋冪敤涓嬈PI灝卞彲浠ユ洿鏂頒竴澶ф壒甯擱噺銆?/p> <p>銆銆姣斿璇達紝鍦ㄤ互鍓嶇殑DirectX鐗堟湰涓紝濡傛灉紼嬪簭鎯沖湪鍦烘櫙閲岀敾寰堝鐨勬爲鏈ㄥ拰鏉傝崏錛屽彲浠ラ噰鐢ㄤ竴涓被浼間簬“鍏嬮殕”鐨勬柟娉曪細鍏堝仛濂戒竴媯墊垨鍑犳5鏍戙佽崏鐨勪笁緇存ā鍨嬶紝鐒跺悗鍦ㄧ敾涓甯х敾闈㈡椂錛屼笉鍋滅殑鍦ㄤ笉鍚岀殑浣嶇疆銆佹柟鍚戯紝鐢ㄤ笉鍚岀殑澶у皬涓哄弬鏁幫紝璋冪敤DirectX API鐨勭粯鍒跺嚱鏁版潵鐢昏繖浜涙ā鍨嬶紝灝卞彲浠ョ敾鍑哄緢澶氳崏鏈ㄦ潵銆備絾鏄瘡鐢諱竴媯碉紝閮借璁劇疆涓澶у爢鍙傛暟鍚庤皟鐢ㄤ竴嬈PI錛岃繖鏄緢鑰桟PU鏃墮棿鐨勶紝鎵浠ュ湪浠ュ墠鐨勬父鎴忎腑椴滄湁澶ц妯′笖緇嗚妭涓板瘜鐨勬.鏋楀満鏅?/p> <p>銆銆鑰屽湪DirectX 10涓紝鎴戜滑鍙互鍏堟妸鏍戙佽崏鐨勫嚑涓ā鍨嬭緇欐樉鍗★紝鐒跺悗灝嗘墍鏈夎鐢葷殑鏍戞湪鐨勪綅緗佹柟鍚戝拰澶у皬涓嬈℃х殑鍐欏叆鍒癱onstant buffer涓紝榪欐牱錛屾樉鍗′究涓涓嬫妸鎵鏈夌殑鏍戞湪鍜岃崏閮戒竴璧風粯鍒跺嚭鏉ヤ簡銆?/p> <p>銆銆鎬諱箣錛孌irectX 10閫氳繃鎻愬墠鏁版嵁楠岃瘉銆佺汗鐞嗛樀鍒椼佺粯鍒墮嫻嬨佹祦寮忚緭鍑恒佺姸鎬佸璞°佸父閲忕紦鍐茬瓑鏈哄埗錛屽府鍔╂父鎴忕殑鏁堟灉鍜屾晥鐜囦笂鍗囧埌涓涓柊鐨勯珮搴︺傝繖鏍鳳紝涔熼伩鍏嶄簡涔嬪墠DirectX鐗堟湰鍥燙PU璐熻澆榪囧ぇ鑰屾棤娉曞鍥懼艦瀹炴柦鏇村緇嗚妭浼樺寲鐨勯棶棰樸?/p> <h2>Shader Model 4.0</h2> <p>銆銆DirectX 10鍙︿竴涓紩浜虹灘鐩殑鐗規т究鏄紩鍏ヤ簡Shader Model 4.0錛岄偅涔堬紝Shader Model 4.0鑳藉甯︽潵鎬庢牱鐨勬柊鐗規э紝鐗瑰埆鏄皢瀹冧笌DirectX 9.0c涓璖hader Model 3.0鐩告瘮鏃訛紵</p> <p>銆銆<em>寮曞叆鏂癝hader : Geometry shader</em></p> <p>銆銆DirectX 10鏂板紩鍏ョ殑Geometry Shader錛屽彲浠ョ畝鍗曞湴緙栫▼鎿嶇旱鍑犱綍鍥懼厓錛屽悓鏃訛紝 vertex銆乬eometry銆乸ixel shader閲囩敤浜嗙粺涓鐨凷ahder鏋舵瀯銆?/p> <p>銆銆Geometry shaders鏄彲緙栫▼鍥懼艦嫻佹按綰跨殑涓澶ц繘姝ャ傚畠絎竴嬈″厑璁哥敱GPU鏉ュ姩鎬佺殑鐢熸垚鍜岄攢姣佸嚑浣曞浘鍏冩暟鎹傞氳繃鍜屾柊鐨勬暟鎹祦杈撳嚭鍔熻兘閰嶅悎浣跨敤錛岃澶氫互鍓嶆棤娉曞疄鏂界殑綆楁硶鐜板湪閮藉彲浠ュ湪GPU涓嬌鐢ㄤ簡銆?/p> <p>銆銆<em>緇熶竴鐨凷hader鏋舵瀯</em></p> <p>銆銆鍦―irectX 9涓紝Pixel shader鎬繪槸鍦ㄥ悇涓柟闈㈣惤鍚庝簬vertex shaders錛屽寘鎷父閲忓瘎瀛樺櫒涓暟銆佸彲鐢ㄧ殑鎸囦護涓暟銆乻hader闀垮害絳夈傜▼搴忓憳闇瑕佸尯鍒嗗寰呰繖涓ょshader銆?/p> <p>銆銆鑰屽湪shader model 4涓紝鏃犺 vertex銆乬eometry鍜宲ixel shader錛屽潎鏈夌粺涓鐨勬寚浠ら泦銆佸悓鏍風殑涓存椂/甯擱噺瀵勫瓨鍣ㄤ釜鏁幫紝瀹冧滑灝嗗鉤絳夌殑鍏變韓GPU涓殑鎵鏈夊彲鐢ㄨ祫婧愩傝繖鏍鳳紝鍦ㄧ紪紼嬫椂渚夸笉蹇呭啀鑰冭檻姣忕shader鑷韓鐨勯檺鍒朵簡銆?/p> <p>銆銆<em>鐧懼嶄簬DirectX 9鐨勫彲鐢ㄨ祫婧?/em></p> <p>銆銆瀵逛簬shader涓彲鐢ㄧ殑璧勬簮錛屽湪Shader model 4.0涓瘮鍘熸潵鏈変簡鎯婁漢鐨勬墿鍏呫傚氨鍍忔棭鏈熺殑紼嬪簭鍛樹滑緇炲敖鑴戞眮鐨勭渷鐫鐢ㄥ彲鎬滅殑640k鍐呭瓨涓鏍鳳紝鍦ㄤ嬌鐢ㄤ互鍓嶇殑DirectX寮鍙戞父鎴忕殑榪囩▼涓紝紼嬪簭鍛橀渶瑕佸皬蹇冪考緲肩殑鍒嗛厤鐝嶈吹鐨剆hader瀵勫瓨鍣ㄨ祫婧愩傚瘎瀛樺櫒鐨勬暟閲忥紝鐩存帴褰卞搷鐫shader紼嬪簭鐨勫鏉傚害銆傝繖鍜屽湪640k鍐呭瓨鐨?鏈哄櫒涓婏紝鎬庝箞涔熶笉鍙兘鍐欏嚭Microsoft Office榪欐牱鐨勫ぇ瑙勬ā杞歡鏄悓涓涓亾鐞嗐?/p> <p>銆銆鑰屽湪DirectX 10涓紝灝嗕復鏃跺瘎瀛樺櫒鐢卞師鏉ョ殑32涓墿鍏呭埌浜?096涓紝灝嗗父閲忓瘎瀛樺櫒鐢卞師鏉ョ殑256涓墿鍏呭埌浜?5536涓?/p> <p>銆銆<em>鏇村鐨勬覆鏌撶洰鏍?Render Target)</em></p> <p>銆銆鎵璋撴覆鏌撶洰鏍囷紝灝辨槸鎸嘒PU鍙互鎶婄敾闈㈢粯鍒跺埌鐨勭洰鏍囷紝鎴戜滑鍙互鎶婂畠鐞嗚В涓篏PU鐨勭敾甯冦備竴鑸潵璇達紝娓叉煋鐩爣琚緭鍑哄埌灞忓箷涓婏紝榪欐牱鎴戜滑灝辮兘鐪嬪埌鐢誨ソ鐨勭敾闈簡銆備絾鏄湁鏃朵負浜嗗疄鐜頒竴浜涚壒鏁堬紝鏌愪簺娓叉煋緇撴灉騫朵笉鐩存帴鐢誨埌灞忓箷涓婏紝鑰屾槸鍐嶈繑緇橤PU鍋氳繘涓姝ョ殑鐗規晥澶勭悊錛岃屼笖娓叉煋鐩爣涓篃涓嶄竴瀹氭槸鐢誨ソ鐨勭敾闈㈢殑棰滆壊淇℃伅銆?/p> <p>銆銆鏍規嵁鍥懼艦鐗規晥鐨勯渶瑕侊紝娓叉煋鐩爣鍙兘鏄瘡涓墿浣撹窛紱誨睆騫曠殑榪滆繎錛屾垨鑰呯墿浣撹〃闈笂姣忎釜鍍忕礌鐨勬柟鍚戯紝鎴栬呮瘡涓墿浣撹〃闈㈢殑娓╁害絳夌瓑錛屼箣涓轟簡瀹炵幇鐗規晥錛屽彲浠ユ寜闇瑕佸湪鍏朵腑緇樺埗浠諱綍淇℃伅銆備負浜嗘彁楂樿繖縐嶆儏鍐典笅鐨勬晥鐜囷紝寰堝鏂扮殑鏄懼崱閮芥敮鎸佸湪鍚屼竴閬峉hader鎵ц緇撴潫鍚庯紝鍚屾椂鎶婁笉鍚岀殑淇℃伅緇樺埗鍒頒笉鍚岀殑娓叉煋鐩爣涓傚湪DirectX 9涓氨宸茬粡鏀寔榪欑鏈哄埗浜嗭紝浣嗘槸瀹冪害鏉熸渶澶氬悓鏃跺悜鍥涗釜娓叉煋鐩爣緇樺埗銆傝孌irectX 10灝嗚繖涓暟閲忔彁鍗囦簡涓鍊嶃?/p> <em>鏇村鐨勭汗鐞?/em> <p>銆銆鍦⊿hader Model 4.0涓彁渚涗簡瀵圭汗鐞嗛樀鍒?Texture arrays)鐨勬敮鎸併傚湪鍓嶆枃涓凡緇忓綰圭悊闃靛垪鏈変簡姣旇緝璇︾粏鐨勪粙緇嶏紝鍦ㄨ繖閲屽彧鐫閲嶄粙緇嶄竴涓嬩笌shader鐩稿叧鐨勯儴鍒嗐?/p> <p>銆銆鍦ㄦ瘡涓汗鐞嗛樀鍒椾腑錛屾渶澶氬彲浠ヤ繚瀛?512寮犲悓鏍峰ぇ灝忕殑綰圭悊銆傝屼笖姣忓紶璐村浘鐨勫垎杈ㄧ巼琚墿灞曞埌浜?192×8192銆傛洿澶х殑鍒嗚鯨鐜囨剰鍛崇潃綰圭悊涓洿涓板瘜鐨勭粏鑺傘傚湪涓涓猻hader涓兘澶熷悓鏃惰闂殑綰圭悊涓暟琚鍔犲埌浜?28涓紝涔熷氨鏄鍦ㄦ瘡嬈℃墽琛屽悓涓涓猻hader鏃訛紝鍙互浣跨敤涓涓汗鐞嗛樀鍒楃殑512涓汗鐞嗕腑鐨?28涓傛墍浠ヨ錛屽湪DirectX 10涓紝綰圭悊鐨勫鏍鋒у拰緇嗚妭紼嬪害灝嗕細鏈夊ぇ騫呯殑鎻愬崌銆?/p> <p>銆銆<em>鏂扮殑HDR棰滆壊鏍煎紡</em></p> <p>銆銆瑕佽榪欎簺騫存潵鍦ㄥ疄鏃跺浘褰㈢晫鐐掑緱鏈鐑殑姒傚康錛屽簲璇ユ槸<a >HDR</a>浜嗐傚畠閫氳繃閲囩敤嫻偣鏍煎紡鐨勯鑹叉牸寮忔潵涓虹汗鐞嗐佸厜鐓х瓑璁$畻鎻愪緵鏋佸ぇ鐨勭簿搴﹀拰棰滆壊鑼冨洿(浠ュ墠鐨勭汗鐞嗕竴鑸?閮芥槸閲囩敤鏁存暟鍨嬬殑棰滆壊鏍煎紡)銆傚敖綆℃渶鍚庢樉紺哄埌灞忓箷涓婅繕鏄瘡涓鑹查氶亾8浣嶇殑鏁存暟鏍煎紡錛屼絾鏄互鍓嶇敱浜庡湪鏉愯川銆佸厜鐓ц綆椾腑綰圭悊涔熸槸鐢ㄦ瘡閫氶亾8浣嶇殑鏍煎紡鏉ュ弬涓庤綆楋紝鎵浠ュ湪鏄劇ず鍒扮敾闈箣鍓嶏紝寰堝緇嗚妭灝卞湪浣庣簿搴︾殑榪愮畻涓涪澶變簡銆?/p> <p>銆銆鑰岄噰鐢ㄦ瘡棰滆壊閫氶亾16浣嶆誕鐐規暟鐨勭汗鐞嗭紝鑳藉淇濊瘉鍦ㄨ繍綆楄繃紼嬩腑鍑犱箮娌℃湁棰滆壊緇嗚妭淇℃伅鐨勪涪澶便傚彟澶栵紝閲囩敤16浣嶆誕鐐規牸寮忕殑棰滆壊閫氶亾錛屽彲浠ヨ〃鐜版洿澶х殑棰滆壊鑼冨洿銆傝繖浜涘氨鏄疕DR鐨勪紭瓚婃с?/p> <p>銆銆瀵圭敤鎴瘋岃█錛屽綋娓告垙涓殑鐢婚潰緗╀笂涓灞侶DR鏁堟灉鍚庯紝绔嬪埢鏄懼緱鍜岀湡姝g殑鐓х墖涓鏍鳳紝鏈夋湨鑳х殑鍏夋檿銆佺粏鑷寸殑楂樺厜鍜屽崄鍒嗚嚜鐒剁殑鑹茶皟銆?/p> <p>銆銆鐒惰岋紝閲囩敤姣忎釜棰滆壊閫氶亾16浣嶆誕鐐規暟鐨勬牸寮忥紝姣旈噰鐢ㄦ瘡閫氶亾8浣嶇殑鏁存暟鏍煎紡鐨勭汗鐞嗚澶氬崰鎹竴鍊嶇殑鏄懼瓨錛涜繖緇欑粯鍒剁殑鏁堢巼甯︽潵浜嗚礋闈㈢殑褰卞搷銆傛墍浠ュ湪 DirectX 10涓紩鍏ヤ簡涓や釜鏂扮殑HDR鏍煎紡銆傜涓縐嶆槸R11G11B10錛岃〃紺虹孩鑹插拰緇胯壊閫氶亾鐢?1浣嶆誕鐐規暟錛岃岃摑鑹查氶亾閲囩敤10浣嶆誕鐐規暟琛ㄧず銆傞偅涔堬紝涓轟粈涔堜笉閮界敤 11浣嶅憿錛熻繖鏄負浜嗗噾32榪欎釜鏁存暟銆傚榪囪綆楁満鐨勪漢閮界煡閬擄紝褰撳唴瀛樹腑涓涓暟鎹崟鍏冪殑瀹藉害鏄?2浣嶆椂錛屽瀹冪殑鎿嶄綔鏁堢巼鏈楂橈紱鑰屼笖鍦ㄧ汗鐞嗘暟鎹腑涓鑸姹傛瘡涓儚绱犵殑鏁版嵁瀹藉害鏄?鐨勫嶆暟錛屽2,8,16,32,64絳夌瓑銆傚張鍥犱負浜虹溂瀵硅摑鑹茬殑鏁忔劅搴︿笉濡傚綰㈣壊鍜岀豢鑹詫紝鎵浠ュ畠姣斿叾浠栦袱涓氶亾灝戠敤浜嗕竴浣嶃?/p> <p>銆銆鍙﹀涓縐嶆牸寮忔槸閲囩敤姣忛氶亾9浣嶅熬鏁般佹墍鏈夐氶亾鍏變韓5浣嶆寚鏁扮殑褰㈠紡(浼楁墍鍛ㄧ煡錛屽湪璁$畻鏈轟腑錛屾誕鐐規暟鏄噰鐢ㄥ熬鏁伴檮鍔犳寚鏁扮殑褰㈠紡鏉ヨ〃紺虹殑)錛屽姞璧鋒潵榪樻槸32浣嶃?榪欎簺鏂扮殑鏍煎紡浣垮緱綰圭悊鑳藉涓庡師鏉ュ崰鐢ㄥ悓鏍峰鐨勬樉瀛樼┖闂達紝閬垮厤浜嗗ぇ鐨勭┖闂村拰甯﹀娑堣椼傚悓鏃訛紝涓轟簡閫傚悎闇瑕佺簿紜殑縐戝璁$畻鐨勫満鍚堬紝DirectX 10鑳藉鏀寔姣忛氶亾32浣?4涓氶亾鍔犺搗鏉?28浣?綺懼害鐨勬誕鐐規暟綰圭悊銆?/p> <p>銆銆DirectX 10涓甫鏉ョ殑榪欎簺鎵╁厖鍜屾彁楂橈紝浣垮緱鍒涘緩鍓嶆墍鏈湁鐨勭粏鑺傜殑瀹炴椂娓告垙鍦烘櫙鐪熸鎴愪負鍙兘銆?/p> <h2>鍑犱綍鐫鑹插櫒涓庢祦寮忚緭鍑?/h2> <p>銆銆鍦―irectX 10鍙戝竷涔嬪墠錛屽浘褰㈢‖浠跺彧鏈夊湪GPU涓婃搷浣滃凡鏈夋暟鎹殑鑳藉姏銆傞《鐐圭潃鑹插櫒(Vertex Shader)鍜屽儚绱犵潃鑹插櫒(Pixel Shader)閮藉厑璁哥▼搴忔搷浣滃唴瀛樹腑宸叉湁鐨勬暟鎹傝繖縐嶅紑鍙戞ā鍨嬮潪甯告垚鍔燂紝鍥犱負瀹冨湪澶嶆潅緗戞牸钂欑毊鍜屽宸叉湁鍍忕礌榪涜綺劇‘璁$畻鏂歸潰閮借〃鐜扮殑寰堝嚭鑹層備絾鏄紝榪欑寮鍙戞ā鍨嬩笉鍏佽鍦ㄥ浘鍍忓鐞嗗櫒涓婄敓鎴愭柊鏁版嵁銆傚綋涓浜涚墿浣撳湪娓告垙涓鍔ㄦ佺殑鍒涘緩鏃?姣斿鏂板瀷姝﹀櫒鐨勫褰?錛屽氨闇瑕佽皟鐢–PU銆傚彲鎯滅幇鍦ㄥぇ澶氭暟娓告垙宸茬粡寰堢粰CPU甯︽潵浜嗗緢澶х殑鍘嬪姏錛屾父鎴忚繘琛屾椂鍔ㄦ佸垱寤哄簽澶ф暟閲忔柊鏁版嵁鐨勬満浼氬氨鍙樺緱寰箮鍏跺井浜嗐?/p> <p>銆銆Shader Model 4.0涓紩鍏ョ殑鍑犱綍鐫鑹插櫒(Geometry Shader)錛岀涓嬈″厑璁哥▼搴忓湪鍥懼儚澶勭悊鍣ㄤ腑鍒涘緩鏂版暟鎹傝繖涓闈╁懡鎬х殑浜嬩歡浣垮緱GPU鍦ㄧ郴緇熶腑鐨勮鑹茬敱鍙彲澶勭悊宸叉湁鏁版嵁鐨勫鐞嗗櫒鍙樻垚浜嗗彲浠ヤ互鏋佸揩閫熷害鏃㈠彲澶勭悊鍙堝彲鐢熸垚鏁版嵁鐨勫鐞嗗櫒銆傚湪浠ュ墠鍥懼艦緋葷粺涓婃棤娉曞疄鐜扮殑澶嶆潅綆楁硶鐜板浠婂彉鎴愪簡鐜板疄銆?/p> <p>銆銆鍑犱綍鐫鑹插櫒琚斁鍦ㄩ《鐐圭潃鑹插櫒鍜屽厜鏍呭寲闃舵(Rasterizer)涓棿銆傛墍璋撳厜鏍呭寲錛屽氨鏄竴琛屼竴琛岀殑鎵弿姣忎釜涓夎褰紝鎶婂畠浠竴涓儚绱犱竴涓儚绱犵殑緇樺埗鍒扮敾闈?涓娿傚嚑浣曠潃鑹插櫒鎶婄粡榪囬《鐐圭潃鑹插櫒澶勭悊榪囩殑欏剁偣褰撲綔杈撳叆錛屽浜庢瘡涓《鐐癸紝鍑犱綍鐫鑹插櫒鍙互鐢熸垚1024涓《鐐逛綔涓鴻緭鍑恒傝繖縐嶇敓鎴愬ぇ閲忔暟鎹殑鑳藉姏鍙仛鏁版嵁鎵╁ぇ (Data Amplification)銆傚悓鏍風殑錛屽嚑浣曠潃鑹插櫒涔熷彲浠ラ氳繃杈撳嚭鏇村皯鐨勯《鐐規潵鍒犻櫎欏剁偣錛屽洜姝わ紝灝卞彨鍋氭暟鎹緝灝?Data Minimization)銆傝繖涓や釜鏂扮壒鎬т嬌GPU鍦ㄦ敼鍙樻暟鎹祦鏂歸潰鍙樺緱寮傚父寮哄ぇ銆?/p> <p>銆銆<em>緇嗗垎鐨勮櫄鎷熶綅縐昏創鍥?Displacement Mapping with Tessellation)</em></p> <p>銆銆鍑犱綍鐫鑹插櫒璁╄櫄鎷熶綅縐昏創鍥懼彲浠ュ湪GPU涓婄敓鎴愩傝櫄鎷熶綅縐昏創鍥炬槸鍦ㄧ綰挎覆鏌撶郴緇熶腑闈炲父嫻佽鐨勪竴欏規妧鏈紝瀹冨彲浠ョ敤涓涓畝鍗曠殑妯″瀷鍜岄珮搴﹀浘(Height Map)娓叉煋鍑洪潪甯稿鏉傜殑妯″瀷銆傞珮搴﹀浘鏄竴寮犵敤鏉ヨ〃紺烘ā鍨嬩笂鍚勭偣楂樺害鐨勭伆搴﹀浘銆傛覆鏌撴椂錛屼綆澶氳竟褰㈢殑妯″瀷浼氳緇嗗垎鎴愬杈瑰艦鏇村鐨勬ā鍨嬶紝鍐嶆牴鎹珮搴﹀浘涓婄殑淇℃伅錛屾妸澶氳竟褰㈡尋鍑猴紝鏉ヨ〃鐜扮粏鑺傛洿涓板瘜鐨勬ā鍨嬨?/p> <p>銆銆鑰屽湪DirectX 9涓紝GPU鏃犳硶鐢熸垚鏂扮殑鏁版嵁錛屼綆澶氳竟褰㈢殑妯″瀷鏃犳硶琚粏鍒嗭紝鎵浠ュ彧鏈夊皬閮ㄥ垎鍔熻兘鐨勮櫄鎷熶綅縐昏創鍥懼彲浠ュ疄鐜板嚭鏉ャ傜幇鍦紝浣跨敤DirectX 10鐨勫己澶у姏閲忥紝鏁頒互鍗冭鐨勯《鐐瑰彲浠ュ嚟絀哄垱閫犲嚭鏉ワ紝涔熷氨瀹炵幇浜嗗疄鏃舵覆鏌撲腑鐪熸鐨勭粏鍒嗙殑铏氭嫙浣嶇Щ璐村浘銆?/p> <p>銆銆<em>鍩轟簬杈圭紭(Adjacency)鐨勬柊綆楁硶</em></p> <p>銆銆鍑犱綍鐫鑹插櫒鍙互澶勭悊涓夌鍥懼厓錛氶《鐐廣佺嚎鍜屼笁瑙掑艦銆傚悓鏍風殑錛屽畠涔熷彲浠ヨ緭鍑鴻繖涓夌鍥懼厓涓殑浠諱綍涓縐嶏紝铏界劧姣忎釜鐫鑹插櫒鍙兘杈撳嚭涓縐嶃傚湪澶勭悊綰垮拰涓夎褰㈡椂錛屽嚑浣曠潃 鑹插櫒鏈夊彇寰楄竟緙樹俊鎭殑鑳藉姏銆備嬌鐢ㄧ嚎鍜屼笁瑙掑艦杈圭紭涓婄殑欏剁偣錛屽彲浠ュ疄鐜板緢澶氬己澶х殑綆楁硶銆傛瘮濡傦紝杈圭紭淇℃伅鍙互鐢ㄦ潵璁$畻鍗¢氭覆鏌撳拰鐪熷疄姣涘彂娓叉煋鐨勬ā鍨嬭疆寤撱?/p> <p>銆銆<em>嫻佸紡杈撳嚭(Stream Output)</em></p> <p>銆銆鍦―irectX 10涔嬪墠錛屽嚑浣曚綋蹇呴』鍦ㄥ啓鍏ュ唴瀛樹箣鍓嶈鍏夋爡鍖栧茍閫佸叆鍍忕礌鐫鑹插櫒(pixel shader)銆侱irectX 10寮曞叆浜嗕竴涓彨鍋氭暟鎹祦寮忚緭鍑?Stream Output)鐨勬柊鐗規э紝瀹冨厑璁告暟鎹粠欏剁偣鐫鑹插櫒鎴栧嚑浣曠潃鑹插櫒涓洿鎺ヨ浼犲叆甯х紦鍐插唴瀛?Frame Buffer Memory)銆傝繖縐嶈緭鍑哄彲浠ヨ浼犲洖娓叉煋嫻佹按綰塊噸鏂板鐞嗐傚綋鍑犱綍鐫鑹插櫒涓庢暟鎹祦杈撳嚭緇撳悎浣跨敤鏃訛紝GPU涓嶄粎鍙互澶勭悊鏂扮殑鍥懼艦綆楁硶錛岃繕鍙互鎻愰珮涓鑸繍綆楀拰鐗╃悊榪愮畻鐨勬晥鐜囥?/p> <p>銆銆 鍦ㄧ敓鎴愩佸垹闄ゆ暟鎹拰鏁版嵁嫻佽緭鍑鴻繖浜涙妧鏈殑鏀寔涓嬶紝涓涓畬鏁寸殑綺掑瓙緋葷粺灝卞彲浠ョ嫭绔嬪湴鍦℅PU涓婅繍琛屼簡銆傜矑瀛愬湪鍑犱綍鐫鑹插櫒涓敓鎴愶紝鍦ㄦ暟鎹墿澶х殑榪囩▼涓鎵╁ぇ涓庢淳鐢熴傛柊鐨勭矑瀛愯鏁版嵁嫻佽緭鍑哄埌鍐呭瓨錛屽啀琚紶鍥炲埌欏剁偣鐫鑹插櫒鍒朵綔鍔ㄧ敾銆傝繃浜嗕竴孌墊椂闂達紝瀹冧滑寮濮嬮愭笎娑堝け錛屾渶鍚庡湪鍑犱綍鐫鑹插櫒涓閿姣併?br></p> <h2>楂樼駭娓叉煋璇█(HLSL 10)</h2> <p>銆銆DirectX 10 涓轟互鍓嶇殑DirectX 9涓殑“楂樼駭鐫鑹茶璦”(High Level Shading Language )甯︽潵浜嗚澶氬姛鑳藉己澶х殑鏂板厓绱犮傚叾涓寘鎷彲浠ユ彁鍗囧父閲忔洿鏂伴熷害鐨?#8220;甯擱噺緙撳啿鍣?#8221;(Constant Buffers)錛屾彁鍗囨覆鏌撴祦紼嬩腑鎿嶄綔鏁版嵁鐨勭伒媧繪х殑“瑙嗗浘”(view)錛屼負鏇村箍娉涚殑綆楁硶鎵鍑嗗鐨?#8220;鏁存暟涓庝綅鎸囦護”(Integer and Bitwise Instructions)錛屾坊鍔犱簡switch璇彞銆?/p> <p>銆銆<em>甯擱噺瀵勫瓨鍣?Constant Buffers)</em></p> <p>銆銆鐫鑹茬▼搴忓悓鏅氱殑紼嬪簭涓鏍烽渶瑕佷嬌鐢ㄥ父閲忔潵瀹氫箟鍚勭鍙傛暟錛屼緥濡傚厜婧愮殑浣嶇疆鍜岄鑹詫紝鎽勫儚鏈虹殑浣嶇疆鍜屾姇褰辯煩闃典互鍙婁竴浜涙潗璐ㄧ殑鍙傛暟(渚嬪鍙嶅厜搴?銆傚湪鏁翠釜娓叉煋鐨勮繃紼嬩腑錛岃繖浜涘父閲忓線寰闇瑕侀綣佺殑鏇存柊錛岃屾暟浠ョ櫨璁$殑甯擱噺鐨勪嬌鐢ㄤ互鍙婃洿鏂版棤鐤戜細緇機PU甯︽潵鏋佸ぇ鐨勮礋杞姐侱irectX 10涓柊鍔犲叆鐨勫父閲忕紦鍐插櫒鍙互鏍規嵁浠栦滑鐨勪嬌鐢ㄩ鐜囧皢榪欎簺甯擱噺鍒嗛厤鍒版寚瀹氱殑緙撳啿鍣ㄤ腑騫跺崗璋冪殑瀵瑰叾榪涜鏇存柊銆?/p> <p>銆銆鍦ㄤ竴涓潃鑹茬▼搴忎腑DirectX 10鏀寔鏈澶?6涓父閲忕紦鍐插櫒錛屾瘡涓涓紦鍐插櫒鍙互瀛樻斁4096涓父閲忋備笌鍏剁浉姣擠irectX 9瀹炲湪鏄皯寰楀彲鎬滐紝鍥犱負瀹冨湪姣忎釜鐫鑹茬▼搴忎腑鍚屾椂鏈澶氬彧鑳芥敮鎸?56涓父閲忋?/p> <p align=center><img class=artimg alt=甯擱噺鐫鑹插櫒 src="http://www.highdiy.com/upimg/uploadimg/20061112/055617123.gif"></p> <p>銆銆鐩告瘮DirectX 9錛孌irectX 10涓嶄粎鎻愪緵浜嗘洿澶氱殑甯擱噺錛屾渶涓昏鐨勬槸瀹冨ぇ騫呯殑鎻愬崌浜嗗父閲忔洿鏂扮殑閫熷害銆傚閭d簺琚垎閰嶅埌鍚屼竴涓紦鍐插櫒涓殑甯擱噺錛屾垜浠彧闇榪涜涓嬈℃搷浣滃氨鍙互灝嗗畠浠叏閮ㄦ洿鏂板畬姣曪紝鑰岄潪鍗曚釜鍗曚釜鐨勫幓鏇存柊銆?/p> <p>銆銆鐢變簬涓嶅悓鐨勫父閲忔洿鏂扮殑鏃墮棿闂撮殧鍚勫紓錛屾墍浠ヨ窡鎹嬌鐢ㄧ殑棰戠巼鏉ュ浠栦滑榪涜緇勭粐灝卞彲浠ヨ幏寰楁洿楂樼殑鏁堢巼銆備婦渚嬫潵璇達細鎽勫儚鏈虹殑瑙嗙煩闃靛彧鍦ㄦ瘡涓甯т箣闂村彂鐢熸敼鍙橈紝鑰岀被浼艱創鍥句俊鎭繖鏍風殑鏉愯川鍙傛暟鍗翠細鍦ㄥ浘鍏冨垏鎹㈡椂鍙戠敓鏀瑰彉銆備簬鏄繖浜涘父閲忕紦鍐插櫒琚垎鎴愪簡涓や釜閮ㄥ垎錛氶偅浜涙瘡甯ф洿鏂扮殑甯擱噺緙撳啿鍣ㄤ笓闂ㄥ瓨鏀鵑偅浜涢渶瑕佸湪涓ゅ撫闂存洿鏂扮殑甯告暟騫跺湪涓ゅ撫闂翠竴嬈℃妸浠栦滑鍏ㄩ儴鏇存柊錛屽彟澶栫殑鍥懼厓鍒囨崲鏇存柊鐨勫父閲忕紦鍐插櫒涔熷悓鐞嗐傝繖鏍峰氨浼氬皢鏇存柊甯擱噺榪囩▼涓殑涓浜涗笉蹇呰鐨勫伐浣滄秷闄わ紝浠ヤ究璁╂暣涓潃鑹插櫒鑴氭湰姣斿湪 DirectX 9涓繍琛岀殑鏇村姞欏虹晠銆?/p> <em>瑙嗗浘(Views)</em> <p>銆銆鍦―irectX 9涓紝鐫鑹插櫒(shader)涓殑鏁版嵁鐨勭被鍨嬫槸琚弗鏍煎垝鍒嗗紑鐨勩備緥濡傦紝欏剁偣鐫鑹插櫒鐢ㄥ埌鐨勯《鐐圭紦鍐插櫒涓殑鏁版嵁涓嶈兘褰撲綔璐村浘鐨勬暟鎹潵璁╁儚绱犵潃鑹插櫒浣跨敤銆傝繖鏍峰氨灝嗙壒瀹氱殑璧勬簮綾誨瀷鍚屽叾鐩稿搴旂殑娓叉煋嫻佺▼涓殑鐗瑰畾姝ラ绱у瘑鍦扮粨鍚堜簡璧鋒潵錛屽悓鏃墮檺鍒朵簡璧勬簮璧勬簮鍦ㄦ暣涓覆鏌撴祦紼嬩腑鍙互浣跨敤鐨勮寖鍥淬?/p> <p>銆銆DirectX 10鑸嶅純浜?#8220;涓ユ牸鍖哄垎鐨勬暟鎹被鍨?#8221;榪欎竴姒傚康銆傚綋涓孌墊暟鎹鍒涘緩錛岄偅涔圖irectX 10鎵鍋氱殑浠呬粎鏄皢鍏剁畝鍗曠殑褰撲綔鍐呭瓨涓殑涓孌靛尯鍩?bit field)鏉ュ寰呫傚鏋滆鎯充嬌鐢ㄨ繖涓孌墊病鏈夊畾涔夌被鍨嬬殑鏁版嵁灝卞繀欏婚氳繃浣跨敤涓涓?#8220;view”銆?浣跨敤“view”錛岀浉鍚岀殑涓孌墊暟鎹氨鍙互鏈夊悇縐嶅悇鏍風殑鏂規硶鏉ヨ鍙栥侱irectX 10鏀寔瀵瑰悓涓孌佃祫婧愬湪鍚屾椂浣跨敤涓や釜“view”銆?/p> <p>銆銆閫氳繃榪欑澶氶噸“view”鐨勬墜孌碉紝灝卞彲浠ュ湪鏁翠釜娓叉煋嫻佺▼鐨勪笉鍚岄儴鍒嗕互涓嶅悓鐩殑浣跨敤鍚屼竴孌墊暟鎹備緥濡傦細鎴戜滑鍙互閫氳繃鍍忕礌鐫鑹插櫒灝嗕竴孌靛嚑浣曟暟鎹覆鏌撳埌涓寮犵汗鐞?涓婏紝涔嬪悗欏剁偣鐫鑹插櫒閫氳繃涓涓?#8220;view”灝嗚繖寮犵汗鐞嗚涓轟竴涓《鐐圭紦鍐插櫒騫跺皢鍏朵腑鐨勬暟鎹綔涓哄嚑浣曟暟鎹覆鏌撱?#8220;view”閫氳繃鍦ㄦ暣涓覆鏌撴祦紼嬩腑鐨勪笉鍚屾楠ら噸澶?浣跨敤鍚屼竴孌墊暟鎹負“鏁版嵁澶勭悊”甯︽潵浜嗘洿澶х殑鐏墊椿鎬э紝甯姪寮鍙戣呭疄鐜版洿澶氭洿鏈夊垱鎰忔洿綺懼僵鐨勭壒鏁堛?/p> <p>銆銆<em>鏁存暟涓庝綅榪愮畻鎸囦護(Integer and Bitwise Instructions)</em></p> <p>銆銆鍦ㄦ柊鐨勯珮綰х潃鑹插櫒璇█涓坊鍔犱簡“鏁存暟涓庝綅鎸囦護”錛岃繖鏍鋒妸“鏁存暟涓庝綅榪愮畻鎸囦護”鐨勬搷浣滃姞鍏ュ叾鍩虹榪愮畻鍑芥暟鐨勫ソ澶勫湪浜庡府鍔╀竴浜涚畻娉曞湪GPU涓婄殑瀹炵幇銆傚紑鍙戣呯粓浜庡彲浠ョ洿鎺ヤ嬌鐢ㄦ暣鏁拌岄潪浠庢誕鐐逛腑寮鴻漿鏉ヨ綆楀嚭鍑嗙‘鐨勭瓟妗堛傛暟緇勭殑绱㈠紩鍙風幇鍦ㄥ彲浠ヨ交鏉劇殑璁$畻鍑烘潵銆侴PU鏃犳暣鏁拌繍綆楃殑鏃朵唬緇堜簬琚粓緇撲簡銆傝繖灝嗕負shader 紼嬪簭鐨勫紑鍙戝甫鏉ュ緢澶х殑渚垮埄銆?/p> <p>銆銆<em>Switch 璇彞(Switch Statement)</em></p> <p>銆銆鍦―irectX 10涓紝 HLSL鍙互鏀寔switch璇彞錛岃繖灝嗗ぇ騫呯畝鍖栭偅浜涙湁鐫澶ч噺鍒ゆ柇(鍒嗘敮)鐨勭潃鑹插櫒鑴氭湰鐨勭紪鐮併備竴縐嶇敤娉曞氨鏄緩绔嬩竴涓?#8220;鑸瘝綰х殑鐫鑹插櫒(shader) 紼嬪簭”鈥斺斿寘鍚簡澶ч噺鐨勫皬鍨嬬潃鑹插櫒紼嬪簭騫朵笖鑷韓浣撳艦宸ㄥぇ鐨勭潃鑹插櫒紼嬪簭銆傚湪榪欎釜“鑸瘝綰х殑鐫鑹插櫒紼嬪簭”錛屾垜浠彲浠ラ氳繃璁懼畾涓涓潗璐↖D鍦╯witch璇彞涓?鍒ゆ柇鏉ヨ交鏉劇殑鍦ㄦ覆鏌撳悓涓涓浘鍏冩椂鍒囨崲涓嶅悓鐨勭壒鏁堛備篃灝辨槸璇達紝鐜板湪涓涓啗闃熶腑鐨勬瘡涓+鍏佃韓涓婇兘鍙互鎷ユ湁鍚勮嚜涓嶅悓鐨勭壒鏁堜簡銆?/p> <h2>DirectX 10鐨勫叾浠栨敼榪?/h2> <p>銆銆<em>alpha to coverage</em></p> <p>銆銆鍦ㄦ父鎴忎腑錛岀粡甯鎬嬌鐢ㄥ甫鏈夊崐閫忔槑淇℃伅綰圭悊鐨勫杈瑰艦妯″瀷鏉ユā鎷熷鏉傜殑鐗╀綋錛屼緥濡傦紝鑽夈佹爲鍙躲侀搧涓濈綉絳夈傚鏋滀嬌鐢ㄧ湡姝g殑妯″瀷錛屼竴棰楄竟緙樺弬宸笉榻愮殑灝忚崏鍙兘灝辮娑堣楁帀鍑犵櫨涓杈瑰艦錛涚劧鑰岄噰鐢ㄩ忔槑綰圭悊錛屽彲浠ュ彧鐢?锝?涓杈瑰艦灝辮В鍐充簡銆?/p> <p align=center><img class=artimg alt=鍗婇忔槑綰圭悊 src="http://www.highdiy.com/upimg/uploadimg/20061112/055643622.gif"><br>閫忔槑綰圭悊紺烘剰</p> <p>銆銆鐒惰岋紝褰撲嬌鐢ㄨ繖縐嶆湁鍗婇忔槑淇℃伅鐨勭汗鐞嗘椂鍊欙紝瀹冪殑涓嶉忔槑鍜岄忔槑閮ㄥ垎鐨勮竟鐣岀嚎涓婏紝甯稿父浼氬嚭鐜伴毦鐪嬬殑閿嬌銆傞噰鐢ㄥ崐閫忔槑娣峰悎鎶鏈彲浠ヨВ鍐寵繖涓棶棰橈紝浣嗘槸瀹冮渶瑕佹妸鍦烘櫙涓墍鏈夎繖綾葷墿浣撴寜鐓х敱榪滃埌榪戠殑欏哄簭鏉ョ粯鍒訛紝鎵嶈兘淇濊瘉瀹冧滑鐨勯伄鎸″叧緋繪槸姝g‘鐨勶紝榪欎細緇機PU甯︽潵寰堝ぇ鐨勫帇鍔涳紝騫朵笉鍙彇銆傚湪浠ュ墠鐗堟湰鐨凞irectX涓紝alpha嫻嬭瘯鍜屾販鍚堢畝鐩村氨鏄浘褰㈢▼搴忓憳鐨勫櫓姊︺?/p> <p>銆銆鍦―irectX 10涓紝浣跨敤浜嗕竴縐嶆柊鐨勬妧鏈彨鍋欰lpha to coverage銆備嬌鐢ㄨ繖縐嶆妧鏈紝鍦ㄩ忔槑鍜屼笉閫忔槑浜ょ晫澶勭殑綰圭悊鍍忕礌浼氳榪涜澶氭瀬鍙栨牱(Multi-sample)錛岃揪鍒版姉閿嬌鐨勬晥鏋溿傝繖灝卞湪涓嶅紩鍏ュぇ鐨勬ц兘寮閿鐨勬儏鍐典笅綆鍗曞茍鏈夋晥鍦拌В鍐充簡榪欎釜闂銆傚澶栧満鏅殑娓告垙灝嗗ぇ澶у彈鐩婁簬榪欑鎶鏈紝鏍戝彾銆侀搧涓濈綉銆佽崏鐨勮竟緙樺皢浼氭洿鍔犳煍鍜屻佸渾婊戙?/p> <p align=center><img class=artimg alt="Alpha to coverage鏁堟灉" src="http://www.highdiy.com/upimg/uploadimg/20061112/055657855.gif"><br>Alpha to coverage鏁堟灉</p> <p>銆銆<em>shadow map filtering</em></p> <p>銆銆闃村獎鍥?Shadow map)鎶鏈凡緇忛愭笎鎴愪負浜嗘覆鏌撶湡瀹炴劅闃村獎鐨勬祦琛屾妧鏈傚湪鍖呮嫭銆婃垬浜夋満鍣ㄣ嬨併婂垎瑁傜粏鑳烇細鍙岄噸鐗瑰伐銆嬨併奊host Recon銆嬨併婂埡瀹俊鏉°嬬瓑鐨勫悇澶ф涓栦唬娓告垙涓兘鑳界湅鍒板畠鐨勮韓褰便傜劧鑰岋紝鐢變簬shadow map鐨勫昂瀵擱檺鍒訛紝鐢ㄥ畠瀹炵幇鐨勯槾褰辮竟緙樺線寰鏈夋槑鏄劇殑閿嬌銆傚湪DirectX 10涓紝鎻愪緵浜嗗shadow map榪涜榪囨護鐨勫姛鑳界殑姝e紡鏀寔銆傜粡榪囪繃婊ゅ悗錛岄槾褰辯殑杈圭紭灝嗕細鍙樺緱鏇村姞鏌斿拰銆?/p> <img src ="http://www.shnenglu.com/yuanyajie/aggbug/25201.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/yuanyajie/" target="_blank">娓呮簮娓告皯</a> 2007-05-31 15:11 <a href="http://www.shnenglu.com/yuanyajie/archive/2007/05/31/25201.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>const 鐢ㄦ硶涓鎽?/title><link>http://www.shnenglu.com/yuanyajie/archive/2007/05/14/24097.html</link><dc:creator>娓呮簮娓告皯</dc:creator><author>娓呮簮娓告皯</author><pubDate>Mon, 14 May 2007 07:56:00 GMT</pubDate><guid>http://www.shnenglu.com/yuanyajie/archive/2007/05/14/24097.html</guid><wfw:comment>http://www.shnenglu.com/yuanyajie/comments/24097.html</wfw:comment><comments>http://www.shnenglu.com/yuanyajie/archive/2007/05/14/24097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/yuanyajie/comments/commentRss/24097.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/yuanyajie/services/trackbacks/24097.html</trackback:ping><description><![CDATA[<p><span style="COLOR: #0000ff">const 寮曠敤鏄寚鍚慶onst 瀵硅薄鐨勫紩鐢?/span></p> <p>const int ival=1024;<br>const int &refVal=ival; //ok,both reference and object are const<br>int  &ref2=ival;        //error! non const reference to a const object<br>鍙互璇誨彇浣嗕笉鑳戒慨鏀箁efVal,鍥犳錛屼換浣曞refVal鐨勮祴鍊奸兘鏄笉鍚堟硶鐨勩傝繖涓檺鍒舵湁鍏舵剰涔夛細涓嶈兘鐩存帴瀵筰val鍚屽鹼紝鍥犳涓嶈兘閫氳繃浣跨敤refVal鏉ヤ慨鏀筰val銆?br>鍚岀悊錛岀敤ival鍒濆鍖杛ef2涔熸槸涓嶅悎娉曠殑錛歳ef2鏄櫘閫氱殑闈瀋onst寮曠敤錛屽洜姝ゅ彲浠ョ敤鏉ヤ慨鏀箁ef2 鎸囧悜鐨勫璞$殑鍊箋傝兘榪噐ef2瀵筰val璧嬪間細瀵艱嚧淇敼const瀵硅薄鐨勫箋備負闃繪榪欐牱鐨勪慨鏀癸紝闇瑕?span style="COLOR: #ff00ff">瑙勫畾灝嗘櫘閫氱殑寮曠敤緇戝畾鍒癱onst瀵硅薄鏄笉鍚堟硶鐨勩?/span></p> <p><span style="COLOR: #ff00ff">const 寮曠敤鍙互鍒濆鍖栦負涓嶅悓綾誨瀷鐨勫璞℃垨鑰呭垵濮嬪寲涓哄彸鍊?/span>錛屽瀛楅潰鍊煎父閲忥細<br>int i=42;<br>// legal for const reference ONLY!<br>const int &r=42;<br>const int &r2=r+i;</p> <p>double dval=3.14;<br>const int &r3=dval;<br>緙栬瘧鍣ㄥ睍寮錛?br>int temp=dval;<br>const int &ri=temp;</p> <p><span style="COLOR: #0000ff">闈瀋onst寮曠敤鍙兘緇戝畾鍒頒笌璇ュ紩鐢ㄥ悓綾誨瀷鐨勫璞°?br>const寮曠敤鍒欏彲浠ョ粦瀹氬埌涓嶅悓浣嗙浉鍏崇殑綾誨瀷鐨勫璞℃垨緇戝畾鍒板彸鍊箋?/span></p> <p>鍦–++涓湡姝g殑涓存椂瀵硅薄鏄湅涓嶈鐨勶紝瀹冧滑涓嶅嚭鐜板湪浣犵殑婧愪唬鐮佷腑銆傚緩绔嬩竴涓病鏈夊懡鍚嶇殑闈炲爢錛坣on-heap錛夊璞′細浜х敓涓存椂瀵硅薄銆傝繖縐嶆湭鍛藉悕鐨勫璞¢氬父鍦ㄤ袱縐嶆潯浠朵笅浜х敓錛?span style="COLOR: #ff00ff">涓轟簡浣垮嚱鏁版垚鍔熻皟鐢ㄨ岃繘琛岄殣寮忕被鍨嬭漿鎹㈠拰鍑芥暟榪斿洖瀵硅薄鏃躲?/span>鐞嗚В濡備綍鍜屼負浠涔堝緩绔嬭繖浜涗復鏃跺璞℃槸寰堥噸瑕佺殑錛屽洜涓烘瀯閫犲拰閲婃斁瀹冧滑鐨勫紑閿瀵逛簬紼嬪簭鐨勬ц兘鏉ヨ鏈夌潃涓嶅彲蹇借鐨勫獎鍝嶃?br>棣栧厛鑰冭檻涓轟嬌鍑芥暟鎴愬姛璋冪敤鑰屽緩绔嬩復鏃跺璞¤繖縐嶆儏鍐點傚綋浼犻佺粰鍑芥暟鐨勫璞$被鍨嬩笌鍙傛暟綾誨瀷涓嶅尮閰嶆椂浼氫駭鐢熻繖縐嶆儏鍐點?/p> <p>鍦ㄥ瓧絎﹁鏁扮殑渚嬪瓙閲岋紝鑳藉鎴愬姛浼犻抍har鏁扮粍鍒癱ountChar涓紝浣嗘槸鍦ㄨ繖閲岃瘯鍥劇敤char鏁扮粍璋冪敤upeercasify鍑芥暟錛屽垯涓嶄細鎴愬姛錛氥傝冭檻涓涓嬭繖涓嚱鏁幫細<br>void uppercasify(string& str);<br>char subtleBookPlug[] = "Effective C++";<br>uppercasify(subtleBookPlug); // 閿欒!<br>娌℃湁涓轟嬌璋冪敤鎴愬姛鑰屽緩绔嬩復鏃跺璞★紝涓轟粈涔堝憿錛?br>鍋囪寤虹珛涓涓復鏃跺璞★紝閭d箞涓存椂瀵硅薄灝嗚浼犻掑埌upeercasify涓紝鍏朵細淇敼榪欎釜涓存椂瀵硅薄錛屾妸瀹冪殑瀛楃鏀規垚澶у啓銆備絾鏄subtleBookPlug鍑芥暟璋冪敤鐨勭湡姝e弬鏁版病鏈変換浣曞獎鍝嶏紱浠呬粎鏀瑰彉浜嗕復鏃朵粠subtleBookPlug鐢熸垚鐨剆tring瀵硅薄銆傛棤鐤戣繖涓嶆槸紼嬪簭鍛樻墍甯屾湜鐨勩傜▼搴忓憳浼犻抯ubtleBookPlug鍙傛暟鍒皍ppercasify鍑芥暟涓紝鏈熸湜淇敼subtleBookPlug鐨勫箋傚綋紼嬪簭鍛樻湡鏈涗慨鏀歸潪涓存椂瀵硅薄鏃訛紝瀵歸潪甯擱噺寮曠敤錛坮eferences-to-non-const錛夎繘琛岀殑闅愬紡綾誨瀷杞崲鍗翠慨鏀逛復鏃跺璞°?span style="COLOR: #ff00ff">榪欏氨鏄負浠涔圕++璇█紱佹涓洪潪甯擱噺寮曠敤錛坮eference-to-non-const錛変駭鐢熶復鏃跺璞°?/span>榪欐牱闈炲父閲忓紩鐢紙reference-to-non-const錛夊弬鏁板氨涓嶄細閬囧埌榪欑闂銆?br><br><span style="COLOR: #ff00ff">鎶婁竴涓猚onst瀵硅薄鐨勫湴鍧璧嬬粰涓涓櫘閫氱殑錛岄潪const瀵硅薄鐨勬寚閽堜篃浼氬鑷寸紪璇戞椂閿欒</span>錛?br>const double pi=3.14;<br>double *ptr=&pi;   //error:ptr is a plain pointer<br>const double *cptr=&pi;  //ok:cptr is a pointer to const</p> <p><span style="COLOR: #ff00ff">涓嶈兘浣跨敤void*鎸囬拡淇濆瓨const 瀵硅薄鐨勫湴鍧錛岃屽繀欏葷敤const void*綾誨瀷鐨勬寚閽堜繚瀛樸?/span><br>const int universe=42;<br>const void *cpv=&universe; //ok;<br>void *pv=&universe;      //error:universe is const</p> <p><span style="COLOR: #ff00ff">鍏佽鎶婇潪const 瀵硅薄鐨勫湴鍧璧嬬粰鎸囧悜const 瀵硅薄鐨勬寚閽?/span>錛?br>double dval=3.14;<br>cptr=&dval;<br></p> typedef string *pstring;<br>const pstring cstr;<br>//cstr is a const pointer to string<br><span style="COLOR: #0000ff">string *const cstr  ; // equivalent to const pstring cstr; <br></span><br><br>Sales_item鎴愬憳鍑芥暟褰㈠弬琛ㄥ悗闈㈢殑const鍚庨潰鎵璧風殑浣滅敤:<span style="COLOR: #ff00ff">const 鏀瑰彉浜嗛殣鍚殑this 褰㈠弬鐨勭被鍨?/span>銆傚湪璋冪敤<br>total.same_isbn(trans)鏃訛紝闅愬惈鐨則his褰㈠弬灝嗘槸涓涓寚鍚憈otal瀵硅薄鐨刢onst Sales_item *綾誨瀷鐨勬寚閽堛?br>鐢變簬this 鏄寚鍚慶onst瀵硅薄鐨勬寚閽堬紝const 鎴愬憳鍑芥暟涓嶈兘淇敼璋冪敤璇ュ嚱鏁扮殑瀵硅薄銆?br><span style="COLOR: #ff00ff">const 瀵硅薄錛屾寚鍚慶onst瀵硅薄鐨勬寚閽堟垨寮曠敤鍙兘鐢ㄤ簬璋冪敤鍏禼onst鎴愬憳鍑芥暟錛屽鏋滃皾璇曠敤瀹冧滑璋冪敤闈?br>const 鎴愬憳鍑芥暟</span>錛屽垯鏄敊璇殑銆? <img src ="http://www.shnenglu.com/yuanyajie/aggbug/24097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/yuanyajie/" target="_blank">娓呮簮娓告皯</a> 2007-05-14 15:56 <a href="http://www.shnenglu.com/yuanyajie/archive/2007/05/14/24097.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢–++瀹炵幇鐨勪竴縐嶆彃浠朵綋緋葷粨鏋?----姒傝堪http://www.shnenglu.com/yuanyajie/archive/2007/04/17/22134.html娓呮簮娓告皯娓呮簮娓告皯Tue, 17 Apr 2007 07:54:00 GMThttp://www.shnenglu.com/yuanyajie/archive/2007/04/17/22134.htmlhttp://www.shnenglu.com/yuanyajie/comments/22134.htmlhttp://www.shnenglu.com/yuanyajie/archive/2007/04/17/22134.html#Feedback8http://www.shnenglu.com/yuanyajie/comments/commentRss/22134.htmlhttp://www.shnenglu.com/yuanyajie/services/trackbacks/22134.html闃呰鍏ㄦ枃

娓呮簮娓告皯 2007-04-17 15:54 鍙戣〃璇勮
]]>
灝嗙被鎴愬憳鍑芥暟鐢ㄥ仛C鍥炶皟鍑芥暟http://www.shnenglu.com/yuanyajie/archive/2007/03/30/20945.html娓呮簮娓告皯娓呮簮娓告皯Fri, 30 Mar 2007 08:10:00 GMThttp://www.shnenglu.com/yuanyajie/archive/2007/03/30/20945.htmlhttp://www.shnenglu.com/yuanyajie/comments/20945.htmlhttp://www.shnenglu.com/yuanyajie/archive/2007/03/30/20945.html#Feedback4http://www.shnenglu.com/yuanyajie/comments/commentRss/20945.htmlhttp://www.shnenglu.com/yuanyajie/services/trackbacks/20945.html 鎻愬嚭闂錛?/font>
鍥炶皟鍑芥暟鏄熀浜嶤緙栫▼鐨刉indows SDK鐨勬妧鏈紝涓嶆槸閽堝C++鐨勶紝紼嬪簭鍛樺彲浠ュ皢涓涓狢鍑芥暟鐩存帴浣滀負鍥炶皟鍑芥暟錛屼絾鏄鏋滆瘯鍥劇洿鎺ヤ嬌鐢–++鐨勬垚鍛樺嚱鏁頒綔涓哄洖璋冨嚱鏁板皢鍙戠敓閿欒錛岀敋鑷崇紪璇戝氨涓嶈兘閫氳繃銆?br />鍒嗘瀽鍘熷洜錛?/font>
鏅氱殑C++鎴愬憳鍑芥暟閮介殣鍚簡涓涓紶閫掑嚱鏁頒綔涓哄弬鏁幫紝浜﹀嵆鈥渢his鈥濇寚閽堬紝C++閫氳繃浼犻掍竴涓寚鍚戣嚜韜殑鎸囬拡緇欏叾鎴愬憳鍑芥暟浠庤屽疄鐜扮▼搴忓嚱鏁板彲浠ヨ闂瓹++鐨勬暟鎹垚鍛樸傝繖涔熷彲浠ョ悊瑙d負浠涔圕++綾葷殑澶氫釜瀹炰緥鍙互鍏變韓鎴愬憳鍑芥暟浣嗘槸紜湁涓嶅悓鐨勬暟鎹垚鍛樸傜敱浜巘his鎸囬拡鐨勪綔鐢紝浣垮緱灝嗕竴涓狢ALLBACK鍨嬬殑鎴愬憳鍑芥暟浣滀負鍥炶皟鍑芥暟瀹夎鏃跺氨浼氬洜涓洪殣鍚殑this鎸囬拡浣垮緱鍑芥暟鍙傛暟涓暟涓嶅尮閰嶏紝浠庤屽鑷村洖璋冨嚱鏁板畨瑁呭け璐?br />瑙e喅鏂規錛?/font>
涓,涓嶄嬌鐢ㄦ垚鍛樺嚱鏁幫紝鐩存帴浣跨敤鏅欳鍑芥暟錛屼負浜嗗疄鐜板湪C鍑芥暟涓彲浠ヨ闂被鐨勬垚鍛樺彉閲忥紝鍙互浣跨敤鍙嬪厓鎿嶄綔絎?friend)錛屽湪C++涓皢璇鍑芥暟璇存槑涓?font color="#ff1493">綾葷殑
鍙嬪厓鍗沖彲銆傝繖縐嶅鐞嗘満鍒朵笌鏅氱殑C緙栫▼涓嬌鐢ㄥ洖璋冨嚱鏁頒竴鏍楓?br />浜?浣跨敤闈欐佹垚鍛樺嚱鏁?/font>錛岄潤鎬佹垚鍛樺嚱鏁頒笉浣跨敤this鎸囬拡浣滀負闅愬惈鍙傛暟錛岃繖鏍峰氨鍙互浣滀負鍥炶皟鍑芥暟浜嗐傞潤鎬佹垚鍛樺嚱鏁板叿鏈変袱澶х壒鐐癸細鍏朵竴錛屽彲浠ュ湪娌℃湁綾誨疄渚嬬殑鎯呭喌涓嬩嬌鐢紱鍏朵簩錛屽彧鑳借闂潤鎬佹垚鍛樺彉閲忓拰闈欐佹垚鍛樺嚱鏁幫紝涓嶈兘璁塊棶闈為潤鎬佹垚鍛樺彉閲忓拰闈為潤鎬佹垚鍛樺嚱鏁般傜敱浜庡湪C++涓嬌鐢ㄧ被鎴愬憳鍑芥暟浣滀負鍥炶皟鍑芥暟鐨勭洰鐨勫氨鏄負浜嗚闂墍鏈夌殑鎴愬憳鍙橀噺鍜屾垚鍛樺嚱鏁幫紝濡傛灉浣滀笉鍒拌繖涓鐐瑰皢涓嶅叿鏈夊疄闄呮剰涔夈傛垜浠氳繃浣跨敤闈欐佹垚鍛樺嚱鏁板闈為潤鎬佹垚鍛樺嚱鏁?font color="#ff1493">鍖呰鐨勫姙娉曟潵瑙e喅闂銆傜被瀹炰緥鍙互閫氳繃闄勫姞鍙傛暟鎴?font color="#ff1493">鍏ㄥ眬鍙橀噺
鐨勬柟寮忕殑鏂瑰紡浼犻掑埌闈欐佹垚鍛樺嚱鏁頒腑銆傚垎鍒婦渚嬪涓嬶細
1錛屽弬鏁頒紶閫掔殑鏂瑰紡
聽聽 #include <iostream.h>聽聽
聽聽 class TClassA
聽聽 {
聽聽 public:

聽聽聽聽聽 void Display(const char* text) { cout << text << endl; };
聽聽聽聽聽 static void Wrapper_To_Call_Display(void* pt2Object, char* text);
聽聽聽聽聽 // more....
聽聽 };

聽聽 // 闈欐佸寘瑁呭嚱鏁幫紝鑳藉璋冪敤鎴愬憳鍑芥暟Display(),鏈韓鍋氫負鍥炶皟鍑芥暟鏉ヤ嬌鐢?/font>
聽聽 void TClassA::Wrapper_To_Call_Display(void* pt2Object, char* string)
聽聽 {
聽聽聽聽聽聽 // 鏄懼紡綾誨瀷杞崲
聽聽聽聽聽聽 TClassA* mySelf = (TClassA*) pt2Object;

聽聽聽聽聽聽 // 璋冪敤鏅氭垚鍛樺嚱鏁?br />聽聽聽聽聽聽 mySelf->Display(string);
聽聽 }

聽聽 // 鍥炶皟鍑芥暟鐨勫涓?鍦ㄨ繖閲屽洖璋冪敤鍑芥暟琚嬌鐢?br />聽聽 void DoItA(void* pt2Object, void (*pt2Function)(void* pt2Object, char* text))
聽聽 {
聽聽聽聽聽 // 浣跨敤鍥炶皟鍑芥暟
聽聽聽聽聽 pt2Function(pt2Object, "hi, i'm calling back using a argument ;-)");聽
聽聽 }

聽 // 鎵ц紺轟緥
聽聽 void Callback_Using_Argument()
聽聽 {
聽聽聽聽聽 TClassA objA;
聽聽聽聽聽 DoItA((void*) &objA, TClassA::Wrapper_To_Call_Display);
聽聽 }

2錛屽叏灞鍙橀噺鐨勬柟寮?br />聽聽 #include <iostream.h>聽聽
聽聽 void* pt2Object;聽聽聽聽聽聽聽 // 鍏ㄥ眬鍙橀噺,鍙互鎸囧悜浠繪剰瀵硅薄
聽聽 class TClassB
聽聽 {
聽聽 public:

聽聽聽聽聽 void Display(const char* text) { cout << text << endl; };
聽聽聽聽聽 static void Wrapper_To_Call_Display(char* text);

聽聽 };

聽聽 // 闈欐佺殑鍖呰鍑芥暟
聽聽 void TClassB::Wrapper_To_Call_Display(char* string)
聽聽 {
聽聽聽聽聽聽 //闇瑕佷繚璇佸叏灞鍙橀噺鍊肩殑姝g‘鎬?br />聽聽聽聽聽聽 TClassB* mySelf = (TClassB*) pt2Object;
聽聽聽聽聽聽 mySelf->Display(string);
聽聽 }

聽 // 鍥炶皟鐢ㄥ嚱鏁扮殑瀹夸富,鍦ㄨ繖閲屽洖璋冪敤鍑芥暟琚嬌鐢?br />聽聽 void DoItB(void (*pt2Function)(char* text))
聽聽 {
聽聽
聽聽聽聽聽 pt2Function("hi, i'm calling back using a global ;-)");聽聽 // make callback
聽聽 }

聽聽 // 鎵ц紺轟緥
聽聽 void Callback_Using_Global()
聽聽 {
聽聽聽聽聽 TClassB objB;聽聽
聽聽聽聽聽 pt2Object = (void*) &objB;
聽聽聽聽聽 DoItB(TClassB::Wrapper_To_Call_Display);
聽聽 }

娉ㄦ剰錛氶氳繃涓婇潰涓ょ鏂規硶鐨勬瘮杈冨彲浠ョ湅鍑猴紝絎?縐嶆柟娉曚腑闈欐佸寘瑁呭嚱鏁板彲浠ュ拰鏅氭垚鍛樺嚱鏁頒繚鎸佺鍚嶄竴鑷達紝褰撳洖璋冨嚱鏁扮殑瀹夸富鎺ュ彛涓嶈兘鏀瑰彉鏃訛紝榪欑鏂規硶鐗瑰埆鏈夌敤銆備絾鍥犱負浣跨敤浜嗗叏灞鍙橀噺錛屼篃涓嶆槸涓涓ソ鐨勮璁°?/p>




]]>
game c++http://www.shnenglu.com/yuanyajie/archive/2006/12/27/16910.html娓呮簮娓告皯娓呮簮娓告皯Wed, 27 Dec 2006 07:35:00 GMThttp://www.shnenglu.com/yuanyajie/archive/2006/12/27/16910.htmlhttp://www.shnenglu.com/yuanyajie/comments/16910.htmlhttp://www.shnenglu.com/yuanyajie/archive/2006/12/27/16910.html#Feedback0http://www.shnenglu.com/yuanyajie/comments/commentRss/16910.htmlhttp://www.shnenglu.com/yuanyajie/services/trackbacks/16910.html銆銆濡傛灉鏈変竴涓ソ鐨勭紪璇戝櫒錛屽啀鍔犱笂瀵硅璦鐨勪簡瑙o紝鐪熺殑鏈夊彲鑳界敤C++鍐欏嚭涓浜涙湁鏁堢巼鐨勬父鎴忕▼搴忔潵銆傛湰鏂囨弿榪頒簡鍏稿瀷鐨勫嚑縐嶄綘鍙互鐢ㄦ潵鍔犻熸父鎴忕殑鎶鏈傚畠鍋囪浣犲凡緇忛潪甯歌偗瀹氫嬌鐢–++鐨勫ソ澶勶紝騫朵笖浣犱篃瀵逛紭鍖栫殑鍩烘湰姒傚康鐩稿綋鐔熸倝銆?br />銆銆絎竴涓粡甯歌浜鴻幏鐩婄殑鍩烘湰姒傚康鏄劇劧鏄墫鏋愶紙profiling錛夌殑閲嶈鎬с傜己涔忓墫鏋愮殑璇濓紝紼嬪簭鍛樺皢鐘袱縐嶉敊璇紝鍏朵竴鏄紭鍖栦簡閿欒鐨勪唬鐮侊細濡傛灉涓涓▼搴忕殑涓昏鎸囨爣涓嶆槸鏁堢巼錛岄偅涔堜竴鍒囪姳鍦ㄤ嬌鍏舵洿楂樻晥涓婄殑鏃墮棿閮芥槸嫻垂銆傞潬鐩磋鏉ュ垽鏂摢孌典唬鐮佺殑涓昏鎸囨爣鏄晥鐜囨槸涓嶅彲淇$殑錛屽彧鏈夌洿鎺ュ幓嫻嬮噺銆傜浜屼釜姒傚康鏄▼搴忓憳緇忓父 "浼樺寲"鍒伴檷浣庝簡浠g爜鐨勯熷害銆傝繖鍦–++鏄竴涓吀鍨嬮棶棰橈紝涓涓畝鍗曠殑鎸囦護琛屽彲鑳戒細浜х敓宸ㄥぇ鏁伴噺鐨勬満鍣ㄤ唬鐮侊紝浣犲簲褰撶粡甯告鏌ヤ綘鐨勭紪璇戝櫒鐨勮緭鍑猴紝騫朵笖鍓栨瀽涔嬨?br />1銆佸璞$殑鏋勯犱笌鏋愭瀯
銆銆瀵硅薄鐨勬瀯閫犱笌鏋愭瀯鏄疌++鐨勬牳蹇冩蹇典箣涓錛屼篃鏄紪璇戝櫒鑳岀潃浣犱駭鐢熶唬鐮佺殑涓涓富瑕佸湴鏂廣傛湭緇忚鐪熻璁$殑紼嬪簭緇忓父鑺辮垂涓嶅皯鏃墮棿鍦ㄨ皟鐢ㄦ瀯閫犲嚱鏁幫紝鎷瘋礉瀵硅薄浠ュ強鍒濆鍖栦復鏃跺璞$瓑絳夈傚垢榪愮殑鏄紝涓鑸殑鎰熻鍜屽嚑鏉$畝鍗曠殑瑙勫垯鍙互璁╂矇閲嶇殑瀵硅薄浠g爜璺戝緱鍜孋鍙湁姣帢涔嬪樊銆?br />銆銆闄ら潪闇瑕佸惁鍒欎笉鏋勯犮?br />銆銆鏈蹇殑浠g爜鏄牴鏈笉榪愯鐨勪唬鐮併備負浠涔堣鍒涘緩涓涓綘鏍規湰涓嶅幓浣跨敤鐨勫璞″憿錛熷湪鍚庨潰鐨勪唬鐮佷腑錛?br />
銆銆voide Function(int arg)
銆銆{
銆銆銆銆Object boj;
銆銆銆銆If(arg==0)
銆銆銆銆銆銆Return;
銆銆銆銆...
銆銆}

銆銆鍗充究arg涓?錛屾垜浠篃浠樺嚭浜嗚皟鐢∣bject鐨勬瀯閫犲嚱鏁扮殑浠d環銆傜壒鍒槸濡傛灉arg緇忓父鏄?錛屽茍涓擮bject鏈韓榪樺垎閰嶅唴瀛橈紝榪欑嫻垂浼氭洿鍔犱弗閲嶃傛樉鐒剁殑錛岃В鍐蟲柟妗堝氨鏄妸obj鐨勫畾涔夌Щ鍒板垽鏂箣鍚庛?br />銆銆灝忓績鍦ㄥ驚鐜腑瀹氫箟澶嶆潅鍙橀噺錛屽鏋滃湪寰幆涓寜鐓ч櫎闈為渶瑕佸惁鍒欎笉鏋勯犵殑鍘熷垯鏋勯犱簡澶嶆潅鐨勫璞★紝閭d箞浣犲湪姣忎竴嬈″驚鐜殑鏃跺欓兘瑕佷粯鍑轟竴嬈℃瀯閫犵殑浠d環銆傛渶濂藉湪寰幆澶栨瀯閫犱箣浠ュ彧鏋勯犱竴嬈°傚鏋滀竴涓嚱鏁板湪鍐呭驚鐜腑琚皟鐢紝鑰岃鍑芥暟鍦ㄦ爤鍐呮瀯閫犱簡涓涓璞★紝浣犲彲浠ュ湪澶栭儴鏋勯犲茍浼犻掍竴涓簲鐢ㄧ粰瀹冦?br />
銆銆1.1 閲囩敤鍒濆鍖栧垪琛?br />銆銆鑰冭檻涓嬮潰鐨勭被錛?br />
銆銆class Vehicle
銆銆{
銆銆public
銆銆銆銆Vehicle(const std::string &name)
銆銆銆銆{
銆銆銆銆銆銆mName=name
銆銆銆銆}
銆銆private:
銆銆銆銆std::string mName;
銆銆}

銆銆鍥犱負鎴愬憳鍙橀噺浼氬湪鏋勯犲嚱鏁版湰浣撴墽琛屽墠鏋勯狅紝榪欐浠g爜璋冪敤浜唖tring mName鐨勬瀯閫犲嚱鏁幫紝鐒跺悗璋冪敤浜嗕竴涓?鎿嶄綔絎︼紝鏉ユ嫹璐濆叾鍊箋傝繖涓緥瀛愪腑鐨勪竴涓吀鍨嬬殑涓嶅ソ涔嬪鍦ㄤ簬string鐨勭己鐪佹瀯閫犲嚱鏁頒細鍒嗛厤鍐呭瓨錛屼絾瀹為檯涓婇兘浼氬垎閰嶅ぇ澶ц秴榪囧疄闄呴渶瑕佺殑絀洪棿銆傛帴涓嬫潵鐨勪唬鐮佷細濂戒簺錛屽茍涓旈樆姝簡瀵?鎿嶄綔絎︾殑璋冪敤錛岃繘涓姝ョ殑鏉ヨ錛屽洜涓虹粰鍑轟簡鏇村鐨勪俊鎭紝闈炵己鐪佹瀯閫犲嚱鏁頒細鏇存湁鏁堬紝騫朵笖緙栬瘧鍣ㄥ彲浠ュ湪鏋勯犲嚱鏁板嚱鏁頒綋涓虹┖鐨勬儏鍐典笅灝嗗叾浼樺寲鎺夈?br />
銆銆class Vehicle
銆銆{
銆銆public
銆銆銆銆Vehicle(const std::string &name):mName(name)
銆銆銆銆{ }
銆銆private:
銆銆銆銆std::string mName;
銆銆}

銆銆1.2 瑕佸墠鑷涓嶈鍚庤嚜澧烇紙鍗寵++I涓嶈I++錛?br />銆銆褰撳啓x=y++鏃朵駭鐢熺殑闂鏄嚜澧炲姛鑳藉皢闇瑕佸埗閫犱竴涓繚鎸亂鐨勫師鍊肩殑鎷瘋礉錛岀劧鍚巠鑷錛屽茍鎶婂師濮嬬殑鍊艱繑鍥炪傚悗鑷鍖呮嫭浜嗕竴涓復鏃跺璞$殑鏋勯狅紝鑰屽墠鑷鍒欎笉瑕併傚浜庢暣鏁幫紝榪欐病鏈夐澶栫殑璐熸媴錛屼絾瀵逛簬鐢ㄦ埛鑷畾涔夌被鍨嬶紝榪欏氨鏄氮璐癸紝浣犲簲璇ュ湪鏈夊彲鑳界殑鎯呭喌涓嬭繍鐢ㄥ墠鑷錛屽湪寰幆鍙橀噺涓紝浣犱細甯擱亣鍒拌繖縐嶆儏褰€?br />銆銆涓嶄嬌鐢ㄦ湁榪斿洖鍊肩殑鎿嶄綔絎?鍦–++涓粡甯哥湅鍒拌繖鏍峰啓欏剁偣鐨勫姞娉曪細

銆銆Vector operator+(const Vector &v1,const Vector &v2)

銆銆榪欎釜鎿嶄綔灝嗗紩璧瘋繑鍥炰竴涓柊鐨刅ector瀵硅薄錛屽畠榪樺繀欏昏浠ュ肩殑褰㈠紡榪斿洖銆傝櫧鐒惰繖鏍峰彲浠ュ啓v=v1+v2榪欐牱鐨勮〃杈懼紡錛屼絾璞℃瀯閫犱復鏃跺璞″拰瀵硅薄鐨勬嫹璐濊繖鏍風殑璐熸媴錛屽浜庤薄欏剁偣鍔犳硶榪欐牱甯歌璋冪敤鐨勪簨鎯呮潵璇村お澶т簡涓鐐廣傛湁鏃跺欐槸鍙互濂藉ソ瑙勫垝浠g爜浠ヤ嬌緙栬瘧鍣ㄥ彲浠ユ妸涓存椂瀵硅薄浼樺寲鎺夛紙榪欎竴鐐瑰氨鏄墍璋撶殑榪斿洖鍊間紭鍖栵級銆備絾鏄洿鏅亶鐨勬儏褰笅錛屼綘鏈濂芥斁涓嬫灦瀛愶紝鍐欎竴鐐歸毦鐪嬩絾鏇村揩閫熺殑浠g爜錛?br />
銆銆void Vector::Add(const Vector &v1,const Vector &v2)

銆銆娉ㄦ剰+=鎿嶄綔絎﹀茍娌℃湁鍚屾牱鐨勯棶棰橈紝瀹冨彧鏄慨鏀圭涓涓弬鏁幫紝騫朵笉闇瑕佽繑鍥炰竴涓復鏃跺璞★紝鎵浠ワ紝鍙兘鐨勬儏鍐典笅錛屼綘涔熷彲浠ョ敤+=浠f浛+銆?br />
銆銆1.3 浣跨敤杞婚噺綰х殑鏋勯犲嚱鏁?br />銆銆鍦ㄤ笂涓涓緥瀛愪腑Vector鐨勬瀯閫犲嚱鏁版槸鍚﹂渶瑕佸垵濮嬪寲瀹冪殑鍏冪礌涓?錛熻繖涓棶棰樺彲鑳藉湪浣犵殑浠g爜涓細鏈夊ソ鍑犲鍑虹幇銆傚鏋滄槸鐨勮瘽錛屽畠浣垮緱鏃犺鏄惁蹇呰錛屾墍鏈夌殑璋冪敤閮借浠樺垵濮嬪寲鐨勪唬浠楓傚吀鍨嬬殑鏉ヨ錛屼復鏃墮《鐐逛互鍙婃垚鍛樺彉閲忓氨浼氳鏃犺緶鐨勬壙鍙楄繖浜涢澶栫殑寮閿銆?br />銆銆涓涓ソ鐨勭紪璇戝櫒鍙互寰堝ソ鐨勭Щ闄や竴浜涜繖縐嶅浣欑殑浠g爜錛屼絾鏄負浠涔堣鍐掕繖涓櫓鍛紵浣滀負涓鑸殑瑙勫垯錛屼綘甯屾湜鏋勯犲嚱鏁板垵濮嬪寲鎵鏈夌殑鎴愬憳鍙橀噺錛屽洜涓烘湭鍒濆鍖栫殑鏁版嵁灝嗕駭鐢熼敊璇備絾鏄紝鍦ㄩ綣佸疄渚嬪寲鐨勫皬綾諱腑錛岀壒鍒槸涓浜涗復鏃跺璞★紝浣犲簲璇ュ噯澶囧悜鏁堢巼瑙勫垯濡ュ崗銆傞閫夌殑鎯呭喌灝辨槸鍦ㄨ澶氭父鎴忎腑鏈夌殑vector鍜孧atrix 綾伙紝榪欎簺綾繪樉鐒跺簲褰撴彁渚涗竴浜涙柟娉曠疆0鍜岃瘑鍒紝浣嗗畠鐨勭己鐪佹瀯閫犲嚱鏁板嵈搴斿綋鏄┖鐨勩?br />銆銆榪欎釜姒傚康鐨勬帹璁哄氨鏄綘搴斿綋涓鴻繖縐嶇被鎻愪緵鍙︿竴涓瀯閫犲嚱鏁般傚鏋滄垜浠殑絎簩涓緥瀛愪腑鐨刅ebicle綾繪槸榪欐牱鍐欑殑璇濓細

銆銆class Vehicle
銆銆{
銆銆public:
銆銆銆銆vehicle()
銆銆銆銆{
銆銆銆銆}
銆銆銆銆void SetName(const std::string &name)
銆銆銆銆{
銆銆銆銆銆銆mName=name;
銆銆銆銆}
銆銆private:
銆銆銆銆std::string mName
銆銆};

銆銆鎴戜滑鐪佸幓浜嗘瀯閫爉Name鐨勫紑閿錛岃屽湪紼嶅悗鐢⊿etName鏂規硶璁劇疆浜嗗叾鍊箋傜浉浼肩殑錛屼嬌鐢ㄦ嫹璐濇瀯閫犲嚱鏁板皢姣旀瀯閫犱竴涓璞$劧鍚庣敤=鎿嶄綔絎﹁濂戒竴浜涖傚畞鎰胯繖鏍鋒潵鏋勯狅細Vebicle V1(V2)涔熶笉瑕佽繖鏍鋒潵鏋勯狅細

銆銆Vehicle v1;v1=v2;

銆銆濡傛灉浣犻渶瑕侀樆姝㈢紪璇戝櫒甯綘鎷瘋礉瀵硅薄錛屾妸鎷瘋礉鏋勯犲嚱鏁板拰鎿嶄綔絎?澹版槑涓虹鏈夌殑錛屼絾涓嶈瀹炵幇鍏朵腑浠諱綍涓涓傝繖鏍鳳紝浠諱綍浼佸浘瀵硅瀵硅薄鐨勬嫹璐濋兘灝嗕駭鐢熶竴涓紪璇戞椂閿欒銆傛渶濂戒篃鍏繪垚瀹氫箟鍗曞弬鏁版瀯閫犲嚱鏁扮殑涔犳儻錛岄櫎闈炰綘鏄鍋氱被鍨嬭漿鎹€傝繖鏍峰彲浠ラ槻姝㈢紪璇戝櫒鍦ㄥ仛綾誨瀷杞崲鏃朵駭鐢熺殑闅愯棌鐨勪復鏃跺璞°?br />
銆銆1.4 棰勫垎閰嶅拰Cache瀵硅薄
銆銆涓涓父鎴忎竴鑸細鏈変竴浜涚被浼氶綣佺殑鍒嗛厤鍜岄噴鏀撅紝姣斿姝﹀櫒浠涔堢殑銆傚湪C紼嬪簭涓紝浣犱細鍒嗛厤涓涓ぇ鏁扮粍鐒跺悗鍦ㄩ渶瑕佺殑鏃跺欎嬌鐢ㄣ傚湪C++涓紝緇忚繃灝忓皬鐨勮鍒掍互鍚庯紝浣犱篃鍙互榪欐牱騫層傝繖涓柟娉曟槸涓嶈涓鐩存瀯閫犲拰鏋愭瀯瀵硅薄鑰屾槸璇鋒眰涓涓柊鑰屾妸鏃х殑榪斿洖緇機ache銆侰ache鍙互瀹炵幇鎴愪竴涓ā鏉匡紝瀹冨氨鍙互涓烘墍鏈夌殑鏈変竴涓己鐪佹瀯閫犲嚱鏁扮殑綾誨伐浣溿侰ache妯℃澘鐨凷ample鍙互鍦ㄩ檮甯︾殑CD涓壘鍒般?br />銆銆浣犱篃鍙互鍦ㄩ渶瑕佹椂鍒嗛厤涓浜涘璞℃潵濉厖Cache錛屾垨鑰呴鍏堝垎閰嶅ソ銆傚鏋滀綘榪樿瀵硅繖浜涘璞$淮鎶や竴涓爢鏍堢殑璇濓紙琛ㄧず鍦ㄤ綘鍒犻櫎瀵硅薄X涔嬪墠錛屼綘鍏堣鍒犻櫎鎵鏈夊湪X鍚庨潰鍒嗛厤鐨勫璞★級錛屼綘鍙互鎶奀ache鍒嗛厤鍦ㄤ竴涓繛緇殑鍐呭瓨鍧椾腑銆?br />
2銆佸唴瀛樼鐞?br />銆銆C++搴旂敤紼嬪簭涓鑸姣擟紼嬪簭鏇存繁鍏ュ埌鍐呭瓨綆$悊鐨勭粏鑺傘傚湪C涓紝鎵鏈夌殑鍒嗛厤閮界畝鍗曠殑閫氳繃malloc鍜宖ree鏉ヨ繘琛岋紝鑰孋++鍒欒繕鍙互閫氳繃鏋勯犱復鏃跺璞″拰鎴愬憳鍙橀噺鏉ラ殣寮忕殑鍒嗛厤鍐呭瓨銆傚緢澶欳++娓告垙紼嬪簭闇瑕佽嚜宸辯殑鍐呭瓨綆$悊紼嬪簭銆傜敱浜嶤++娓告垙紼嬪簭瑕佹墽琛屽緢澶氱殑鍒嗛厤錛屾墍浠ヨ鐗瑰埆灝忓績鍫嗙殑紕庣墖銆備竴涓柟娉曟槸閫夋嫨涓鏉″鏉傜殑璺細瑕佷箞鍦ㄦ父鎴忓紑濮嬪悗鏍規湰涓嶅垎閰嶄換浣曞唴瀛橈紝瑕佷箞緇存姢涓涓法澶х殑榪炵畫鍐呭瓨鍧楋紝騫舵寜鏈熼噴鏀撅紙姣斿鍦ㄥ叧鍗′箣闂達級銆傚湪鐜頒唬鏈哄櫒涓婏紝濡傛灉浣犳兂瀵逛綘鐨勫唴瀛樹嬌鐢ㄥ緢璀︽儠鐨勮瘽錛屽緢涓ユ牸鐨勮鍒欐槸娌″繀瑕佺殑銆?br />銆銆絎竴姝ユ槸閲嶈澆new鍜?Delete鎿嶄綔絎︼紝浣跨敤鑷繁瀹炵幇鐨勬搷浣滅鏉ユ妸娓告垙鏈緇忓父鐨勫唴瀛樺垎閰嶄粠malloc瀹氬悜鍒伴鍏堝垎閰嶅ソ鐨勫唴瀛樺潡鍘伙紝渚嬪錛屼綘鍙戠幇浣犱換浣曟椂鍊欐渶澶氭湁10000 涓?瀛楄妭鐨勫唴瀛樺垎閰嶏紝浣犲彲浠ュ厛鍒嗛厤濂?0000瀛楄妭錛岀劧鍚庡湪闇瑕佹椂寮曠敤鍑烘潵銆備負浜嗚窡韙摢浜涘潡鏄┖鐨勶紝鍙互緇存姢涓涓敱姣忎竴涓┖鐨勫潡鎸囧悜涓嬩竴涓┖鐨勫潡鐨勫垪琛?free list銆傚湪鍒嗛厤鐨勬椂鍊欙紝鎶婂墠闈㈢殑block縐繪帀錛屽湪閲婃斁鐨勬椂鍊欙紝鎶婅繖涓┖鍧楀啀鏀懼埌鍓嶉潰鍘匯傚浘1鎻忚堪浜嗚繖涓猣ree list濡備綍鍦ㄤ竴涓繛緇殑鍐呭瓨鍧椾腑錛屼笌涓緋誨垪鐨勫垎閰嶅拰閲婃斁鍗忎綔鐨勬儏褰€?br />

鍥? A linked free list
[img]http://mays.soage.com/develop/optimize/200112/image/Other/OptFORCGame.gif[/img]

銆銆浣犲彲浠ュ緢瀹規槗鐨勫彂鐜頒竴涓父鎴忔槸鏈夌潃璁稿灝忓皬鐨勭敓鍛界煭鏆傜殑鍐呭瓨鍒嗛厤錛屼綘涔熻甯屾湜涓哄緢澶氬皬鍧椾繚鐣欑┖闂淬備負閭d簺鐜板湪娌℃湁浣跨敤鍒扮殑涓滆タ淇濈暀澶у唴瀛樺潡浼氭氮璐瑰緢澶氬唴瀛樸傚湪涓瀹氱殑灝哄涓婏紝浣犲簲褰撴妸鍐呭瓨鍒嗛厤浜ょ粰涓鏀笉鍚岀殑澶у唴瀛樺垎閰嶅嚱鏁版垨鏄洿鎺ヤ氦緇檓alloc()銆?br />
3銆佽櫄鍑芥暟
銆銆C++娓告垙紼嬪簭鐨勬壒璇勮呮繪槸鎶婄煕澶村鍑嗚櫄鍑芥暟錛岃涓哄畠鏄竴涓檷浣庢晥鐜囩殑紲炵鐗規с傛蹇墊х殑璇達紝铏氬嚱鏁扮殑鏈哄埗寰堢畝鍗曘備負浜嗗畬鎴愪竴涓璞$殑铏氬嚱鏁拌皟鐢紝緙栬瘧鍣ㄨ闂璞$殑铏氬嚱鏁拌〃錛岃幏寰椾竴涓垚鍛樺嚱鏁扮殑鎸囬拡錛岃緗皟鐢ㄧ幆澧冿紝鐒跺悗璺寵漿鍒拌鎴愬憳鍑芥暟鐨勫湴鍧涓娿傜浉瀵逛簬C紼嬪簭鐨勫嚱鏁拌皟鐢紝C紼嬪簭鍒欐槸璁劇疆璋冪敤鐜錛岀劧鍚庤煩杞埌涓涓棦瀹氱殑鍦板潃涓娿備竴涓櫄鍑芥暟璋冪敤鐨勯澶栬礋鎷呮槸铏氬嚱鏁拌〃鐨勯棿鎺ユ寚鍚戯紱鐢變簬浜嬪厛騫朵笉鐭ラ亾灝嗚璺寵漿鐨勫湴鍧錛屾墍浠ヤ篃鏈夊彲鑳介犳垚澶勭悊鍣ㄤ笉鑳藉懡涓瑿ache銆?br />銆銆鎵鏈夌湡姝g殑C++紼嬪簭閮藉铏氬嚱鏁版湁澶ч噺鐨勪嬌鐢紝鎵浠ヤ富瑕佺殑鎵嬫鏄槻姝㈠湪閭d簺鏋佸叾閲嶈鏁堢巼鐨勫湴鏂圭殑铏氬嚱鏁拌皟鐢ㄣ傝繖閲屾湁涓涓吀鍨嬬殑渚嬪瓙錛?br />
銆銆Class BaseClass
銆銆{
銆銆public:
銆銆銆銆virtual char *GetPointer()=0;
銆銆};

銆銆Class Class1: public BaseClass
銆銆{
銆銆銆銆virtual char *GetPointer();
銆銆};

銆銆Class Class2:public BaseClass
銆銆{
銆銆銆銆virtual char *GetPointer();
銆銆};

銆銆void Function(BaseClass *pObj)
銆銆{
銆銆銆銆char *ptr=pObj->GetPointer();
銆銆}

銆銆濡傛灉Function()鏋佸叾閲嶈鏁堢巼錛屾垜浠簲褰撴妸GetPointer浠庝竴涓櫄鍑芥暟鏀規垚鍐呰仈鍑芥暟銆備竴縐嶆柟寮忔槸緇橞aseClass澧炲姞涓涓柊鐨勪繚鎶ょ殑鏁版嵁鎴愬憳錛屽湪姣忎竴涓被涓緗鎴愬憳鐨勫鹼紝鍦℅etPointer榪欎釜鍐呰仈鍑芥暟涓繑鍥炶鎴愬憳緇欒皟鐢ㄨ咃細

銆銆Class BaseClass
銆銆{
銆銆public:
銆銆銆銆inline char GetPointerFast()
銆銆銆銆{
銆銆銆銆銆銆return mpPointer;
銆銆銆銆}
銆銆protected:
銆銆銆銆inline void SetPointer(char *pData)
銆銆銆銆{
銆銆銆銆銆銆mpData = pData;
銆銆銆銆}
銆銆private:
銆銆銆銆char *mpData;
銆銆};

銆銆void Function(BaseClass *pObj)
銆銆{
銆銆銆銆char *ptr= pObj->GetPointerFast();
銆銆}

銆銆涓涓洿嬋榪涚殑鏂規硶鏄噸鏂拌鍒掍綘鐨勭被緇ф壙鏍戯紝濡傛灉Class1鍜孋lass2鍙湁涓鐐圭偣涓嶅悓錛岄偅涔堝彲浠ユ妸瀹冧滑鎹嗙粦鍒板悓涓涓被涓幓錛岃岀敤涓涓狥lag鏉ヨ〃鏄庡畠灝嗚薄Class1榪樻槸璞lass2涓鏍峰伐浣滐紝鍚屾椂鍦˙aseClass涓妸綰櫄鍑芥暟鍘繪帀銆傝繖鏍風殑璇濓紝涔熷彲浠ヨ薄鍓嶉潰鐨勪緥瀛愪竴鏍鋒妸GetPointer鍐欐垚鍐呰仈銆傝繖縐嶅彉閫氱湅璧鋒潵涓嶆槸寰堥珮闆咃紝浣嗘槸鍦ㄧ己灝慍ache鐨勬満鍣ㄤ笂璺戝唴寰幆鏃訛紝浣犲彲鑳戒細寰堟効鎰忎負浜嗗幓鎺夎櫄鍑芥暟璋冪敤鑰屾妸浜嬫儏鍋氬緱鏇村姞闅劇湅銆?br />銆銆铏界劧姣忎竴涓柊鐨勮櫄鍑芥暟閮藉彧緇欐瘡涓被鐨勮櫄琛ㄥ鍔犱簡涓涓寚閽堢殑灝哄錛堥氬父鏄彲浠ュ拷鐣ョ殑浠d環錛夛紝絎竴涓櫄鍑芥暟榪樻槸鍦ㄦ瘡涓涓璞′笂瑕佹眰浜嗕竴涓寚鍚戣櫄琛ㄧ殑鎸囬拡銆傝繖灝辨槸璇翠綘鍦ㄥ緢灝忕殑銆侀綣佷嬌鐢ㄧ殑綾諱笂浣跨敤浠諱綍铏氬嚱鏁拌岄犳垚浜嗛澶栫殑璐熸媴錛岃繖浜涢兘鏄笉鑳芥帴鍙楃殑銆傜敱浜庣戶鎵夸竴鑸兘瑕佺敤鍒頒竴涓垨鍑犱釜铏氬嚱鏁幫紙鑷沖皯鏈変竴涓櫄鐨勬瀽鏋勫嚱鏁幫級錛屾墍浠ヤ綘娌″繀瑕佸湪灝忚岄綣佷嬌鐢ㄧ殑瀵硅薄涓婁嬌鐢ㄤ換浣曠戶鎵褲?br />
4銆佷唬鐮佸昂瀵?br />銆銆緙栬瘧鍣ㄥ洜涓篊++浜х敓鍐楅暱鐨勪唬鐮佽岃嚟鍚嶆槶钁椼傜敱浜庡唴瀛樻湁闄愶紝鑰屽皬鐨勪笢瑗垮線寰鏄揩鐨勶紝鎵浠ヤ嬌浣犵殑鍙墽琛屾枃浠跺敖鍙兘鐨勫皬鏄潪甯擱噸瑕佺殑銆傞鍏堝彲浠ュ仛鐨勪簨鎯呮槸鎷夸竴涓紪璇戝櫒鏉ョ爺絀躲傚鏋滀綘鐨勭紪璇戝櫒浼氬湪鍙墽琛屾枃浠朵腑淇濆瓨 Debug淇℃伅鐨勮瘽錛岄偅涔堟妸瀹冧滑縐婚櫎鎺夈傦紙娉ㄦ剰MS VC浼氭妸Debug淇℃伅鏀懼湪鍙墽琛屾枃浠跺閮紝鎵浠ユ病鍏崇郴錛夊紓甯稿鐞嗕細浜х敓棰濆鐨勪唬鐮侊紝灝藉彲鑳界殑鍘婚櫎寮傚父澶勭悊浠g爜銆傜‘淇濊繛鎺ュ櫒閰嶇疆涓哄幓闄ゆ棤鐢ㄧ殑鍑芥暟鍜岀被銆傚紑鍚紪璇戝櫒鐨勬渶楂樹紭鍖栫駭鍒紝騫跺皾璇曡緗負灝哄鏈灝忓寲鑰屼笉鏄熷害鏈澶у寲 鈥?鏈夋椂鍊欙紝鐢變簬Cache鍛戒腑鐨勬彁楂橈紝浼氫駭鐢熸洿濂界殑榪愯鏁堟灉銆傦紙娉ㄦ剰鍦ㄤ嬌鐢ㄨ繖欏硅緗椂媯鏌nstrinsic鍔熻兘鏄惁涔熷浜庢墦寮鐘舵侊級鍘繪帀鎵鏈塂ebug 杈撳嚭鐘舵佷笅鐨勬氮璐圭┖闂寸殑瀛楃涓詫紝浣跨紪璇戝櫒鎶婂涓浉鍚岀殑瀛楃涓叉崋緇戞垚涓涓疄渚嬨?br />銆銆鍐呰仈閫氬父鏄犳垚澶у嚱鏁扮殑棣栫姱銆傜紪璇戝櫒鍙互鑷敱鐨勯夋嫨娉ㄦ剰鎴栧拷鐣ヤ綘鍐欑殑inline鍏抽敭瀛楋紝鑰屼笖瀹冧滑榪樹細鑳岀潃浣犲埗閫犱竴浜涘唴鑱斻傝繖鏄彟涓涓浣犱繚鎸佽交閲忕駭鐨勬瀯閫犲嚱鏁扮殑鍘熷洜錛岃繖鏍峰爢鏍堜腑鐨勫璞″氨涓嶄細鍥犱負鏈夊ぇ閲忕殑鍐呰仈浠g爜鑰岃啫鑳銆傚悓鏃朵篃瑕佸皬蹇冮噸杞借繍綆楃錛屽嵆浣挎槸鏈綆鐭殑琛ㄨ揪寮忓m1=m2*m3濡傛灉m2鍜宮3鏄煩闃電殑璇濓紝涔熷彲鑳戒駭鐢熷ぇ閲忕殑鍐呰仈浠g爜銆備竴瀹氳娣卞叆浜嗚В浣犵殑緙栬瘧鍣ㄥ浜庡唴鑱旂殑璁劇疆銆?br />銆銆鍚敤榪愯鏃剁被鍨嬩俊鎭紙RTTI錛夐渶瑕佺紪璇戝櫒涓烘瘡涓涓被浜х敓涓浜涢潤鎬佷俊鎭俁TTI涓鑸潵璇存槸緙虹渷鍚敤鐨勶紝榪欐牱鎴戜滑鐨勪唬鐮佸彲浠ヨ皟鐢╠ynamic_cast浠ュ強媯嫻嬩竴涓璞$殑綾誨瀷錛岃冭檻瀹屽叏紱佹浣跨敤RTTI鍜宒ynamic_cast浠ヨ妭鐪佺┖闂達紙榪涗竴姝ョ殑璇達紝鏈夋椂鍊?dynamic_cast鍦ㄦ煇浜涘疄鐜頒腑闇瑕佷粯鍑哄緢楂樼殑浠d環錛夊彟涓鏂歸潰錛屽綋浣犵湡鐨勯渶瑕佹湁鍩轟簬綾誨瀷鐨勪笉鍚岃涓虹殑鏃跺欙紝澧炲姞涓涓笉鍚岃涓虹殑铏氬嚱鏁般傝繖鏄洿濂界殑闈㈠悜瀵硅薄璁捐錛堟敞鎰弒tatic_cast涓庤繖涓嶅悓錛屽畠鐨勬晥鐜囧拰C璇█鐨勭被鍨嬭漿鎹竴鏍鳳級銆?br />
5銆佹爣鍑嗙被搴擄紙STL錛?br />銆銆鏍囧噯綾誨簱鏄竴濂楀疄鐜頒簡甯歌鐨勭粨鏋勫拰綆楁硶鐨勬ā鏉匡紝渚嬪dynamic arrays錛堢О涓簐ector錛夛紝set錛宮ap絳夌瓑銆備嬌鐢⊿TL鍙互鑺傜渷浣犲緢澶氭椂闂存潵鍐欏拰璋冭瘯閭d簺瀹瑰櫒銆傚拰涔嬪墠璋堝埌鐨勪竴鏍鳳紝濡傛灉甯屾湜緋葷粺鐨勬晥鐜囨渶澶у寲錛屼綘蹇呴』瑕佹敞鎰忎綘鐨凷TL鐨勫叿浣撳疄鐜扮殑緇嗚妭銆?br />銆銆涓轟簡鑳藉瀵瑰簲浜庢渶澶ц寖鍥寸殑搴旂敤錛孲TL鏍囧噯鍦ㄥ唴瀛樺垎閰嶈繖涓鍩熶繚鎸佷簡娌夐粯銆傚湪STL瀹瑰櫒涓殑姣忎竴涓搷浣滈兘鏈変竴瀹氱殑鏁堢巼淇濊瘉錛屼緥濡傦紝緇欎竴涓猻et榪涜鎻掑叆鎿嶄綔鍙O(log n)鐨勬椂闂達紝浣嗘槸錛屽涓涓鍣ㄧ殑鍐呭瓨浣跨敤娌℃湁浠諱綍淇濊瘉銆?br />銆銆璁╂垜浠潵浠旂粏浜嗚В娓告垙寮鍙戜腑鐨勪竴涓潪甯告櫘閬嶇殑闂錛氫綘甯屾湜淇濆瓨涓緇勫璞★紝錛堟垜浠細縐板叾涓哄璞″垪琛紝铏界劧涓嶄竴瀹氳淇濆瓨鍦⊿TL鐨勫垪琛ㄤ腑錛夐氬父浣犱細瑕佹眰姣忎釜瀵硅薄鍦ㄨ繖涓〃鏈変笖浠呮湁涓涓紝榪欐牱浣犲氨涓嶇敤鎷呭績涓涓伓鐒朵駭鐢熺殑鍦ㄥ鍣ㄤ腑鎻掑叆涓涓凡瀛樺湪鍗曞厓鐨勬搷浣滀簡銆係TL鐨剆et蹇界暐鍓湰錛屾墍鏈夌殑鎻掑叆銆佸垹闄ゅ拰鏌ヨ鐨勯熷害閮芥槸O(log n)錛岃繖鏄笉鏄氨鏄緢濂界殑閫夋嫨鍛紵
銆銆铏界劧鍦╯et涓婄殑澶у鏁版搷浣滅殑閫熷害閮芥槸O(log n)錛屼絾鏄繖閲岄潰渚濈劧瀛樺湪鐫娼滃湪鐨勫嵄鏈恒傝櫧鐒跺鍣ㄧ殑鍐呭瓨浣跨敤渚濊禆浜庡疄鐜幫紝浣嗗緢澶氬疄鐜拌繕鏄湪綰㈤粦鏍戠殑鍩虹涓婂疄鐜扮殑銆傚湪綰㈤粦鏍戜笂錛屾爲鐨勬瘡涓涓妭鐐歸兘鏄鍣ㄧ殑涓涓厓绱犮傚父瑙佺殑瀹炵幇鏂規硶鏄湪姣忎竴涓厓绱犺鍔犲叆鍒版爲鏃訛紝鍒嗛厤涓涓妭鐐癸紝鑰屽綋姣忎釜鍏冪礌琚Щ鍑烘爲鏃訛紝閲婃斁涓涓妭鐐廣傛牴鎹綘鎻掑叆鍜屽垹闄ょ殑棰戠箒紼嬪害錛屽湪鍐呭瓨綆$悊鍣ㄤ笂鎵鑺辮垂鐨勬椂闂村皢鎴栧鎴栧皯鐨勫獎鍝嶄綘閫氳繃浣跨敤set鑰岃幏寰楃殑濂藉銆?br />銆銆鍙﹀涓涓В鍐蟲柟妗堟槸浣跨敤vector鏉ュ瓨鍌ㄥ厓绱狅紝vector淇濊瘉鍦ㄥ鍣ㄧ殑鏈娣誨姞鍏冪礌鏈夊緢楂樼殑鏁堢巼銆傝繖琛ㄧず瀹為檯涓妚ector鍙湪寰堝伓鐒剁殑鎯呭喌涓嬫墠閲嶆柊鍒嗛厤鍐呭瓨錛屼篃灝辨槸璇達紝褰撴弧鐨勬椂鍊欐墿瀹逛竴鍊嶃傚綋浣跨敤vector鏉ヤ繚瀛樹竴涓笉鍚屽厓绱犲垪琛ㄧ殑鏃跺欙紝浣犻鍏堣媯鏌ュ厓绱犳槸鍚﹀凡緇忓瓨鍦紝濡傛灉娌℃湁錛岄偅涔堝姞鍏ャ傝屽鏁翠釜vector媯鏌ヤ竴閬嶉渶瑕佽姳璐筄(n)鐨勬椂闂達紝浣嗘槸浣嗗疄闄呯壍娑夊埌鐨勯儴鍒嗗簲璇ユ瘮杈冨皯錛岃繖鏄洜涓簐ector鐨勬瘡涓厓绱犻兘鍦ㄥ唴瀛樹腑榪炵畫瀛樻斁錛屾墍浠ユ鏌ユ暣涓獀ector瀹為檯涓婃槸涓涓槗浜巆ache鐨勬搷浣溿傛鏌ユ暣涓猻et灝嗛犳垚cache 涓嶅懡涓紝榪欐槸鍥犱負鍦ㄧ孩榛戞爲涓婂垎鍒瓨鏀劇殑鍏冪礌鍙兘鏁e竷鍦ㄥ唴瀛樼殑鍚勪釜瑙掕惤銆傚悓鏃訛紝鎴戜滑涔熸敞鎰忓埌set蹇呴』棰濆緇存姢涓緇勬爣璁頒互璁劇疆鏁翠釜鏍戙傚鏋滀綘瑕佷繚瀛樼殑鏄璞$殑鎸囬拡錛宻et鍙兘瑕佽姳璐箆ector鎵瑕佽姳璐圭殑鍐呭瓨鐨?鍒?鍊嶃?br />銆銆Set鐨勫垹闄ゆ搷浣滄秷鑰楁椂闂碠(log n)錛岀湅璧鋒潵鏄緢蹇紝濡傛灉浣犱笉鑰冭檻鍙兘瀵筬ree()鐨勮皟鐢ㄧ殑璇濄俈ector鐨勫垹闄ゆ搷浣滄秷鑰桹(n)錛岃繖鏄洜涓轟粠琚垹闄ょ殑閭d釜鍏冪礌寮濮嬪埌緇撳熬澶勭殑鍏冪礌錛屾瘡涓涓厓绱犻兘瑕佽鎷瘋礉鍒板墠涓涓綅緗笂銆傚鏋滃厓绱犻兘鍙槸鎸囬拡鐨勮瘽錛岄偅涔堣繖涓嫹璐濆皢鍙互渚濋潬涓涓畝鍗曠殑memcpy()鏉ュ畬鎴愶紝鑰岃繖涓嚱鏁版槸鐩稿綋蹇殑銆傦紙榪欎篃鏄負浠涔堥氬父閮芥妸瀵硅薄鐨勬寚閽堝偍瀛樺湪STL鐨勫鍣ㄤ腑鐨勪竴涓師鍥狅紝鑰屼笉鏄偍瀛樺璞℃湰韜傚鏋滀綘鐩存帴淇濆瓨浜嗗璞℃湰韜紝灝嗕細鍦ㄥ緢澶氭搷浣滀腑閫犳垚璁稿棰濆鐨勬瀯閫犲嚱鏁扮殑璋冪敤錛屼緥濡傚垹闄ょ瓑錛夈?br />銆銆set鍜宮ap閫氬父鏉ヨ楹葷儲澶т簬鏈夌敤錛屽鏋滀綘榪樻病鏈夋剰璇嗗埌榪欎竴鐐圭殑璇濓紝鑰冭檻閬嶅巻涓涓鍣ㄧ殑浠d環錛屼緥濡傦細

銆銆for(Collection::iterator it = Collection.begin(); it != Collection.end(); ++it)

銆銆濡傛灉Collection鏄痸ector錛岄偅涔?+it灝辨槸涓涓寚閽堣嚜澧炪備絾鏄綋Collection鏄竴涓猻et鎴栬呮槸涓涓猰ap鐨勮瘽錛?+it鍖呮嫭浜嗚闂孩榛戞爲涓婄殑涓嬩竴涓妭鐐廣傝繖涓搷浣滅浉褰撳鏉傝屼笖寰堝鏄撻犳垚cache涓嶅懡涓紝鍥犱負鏍戠殑鑺傜偣鍑犱箮閬嶅竷鍐呭瓨鐨勫悇澶勩?br />銆銆褰撶劧錛屽鏋滀綘瑕佸湪瀹瑰櫒涓繚瀛樺ぇ閲忕殑鍏冪礌錛屽茍涓旇繘琛岃澶氱殑鎴愬憳璇鋒眰錛岄偅涔坰et鐨凮(log n)鐨勬晥鐜囧畬鍏ㄥ彲浠ユ姷娑堥偅浜涘唴瀛樻柟闈㈢殑娑堣椼傝繎浼肩殑錛屽鏋滀綘鍋跺皵鎵嶄嬌鐢ㄥ鍣紝閭d箞榪欓噷鐨勬晥鐜囧樊鍒氨闈炲父鐨勫皬銆備綘搴旇鍋氫竴浜涙晥鐜囪瘎浼頒互浜嗚В澶氬ぇ鐨刵浼氫嬌 set鍙樺緱鏇村揩銆備篃璁鎬綘浼氭儕濂囩殑鍙戠幇鍦ㄦ父鎴忕殑澶у鏁板吀鍨嬪簲鐢ㄤ笅vector鐨勬墍鏈夋晥鐜囬兘姣攕et瑕侀珮銆?br />銆銆榪欒繕涓嶆槸STL鍐呭瓨浣跨敤鐨勫叏閮ㄣ備竴瀹氳浜嗚В褰撲綘浣跨敤clear鏂規硶鏃訛紝瀹瑰櫒鏄惁鐪熺殑閲婃斁鎺変簡瀹冪殑鍐呭瓨銆傚鏋滄病鏈夛紝灝卞彲鑳戒駭鐢熷唴瀛樼鐗囥傛瘮濡傦紝濡傛灉浣犲紑濮嬫父鎴忕殑鏃跺欏緩绔嬩簡涓涓┖鐨剉ector錛屽湪娓告垙榪囩▼涓鍔犲厓绱狅紝鐒跺悗鍦ㄦ父鎴弐estart鏃惰皟鐢╟lear錛岃繖鏃秜ector鏈繀閲婃斁瀹冪殑鍏ㄩ儴鍐呭瓨銆傝繖涓┖鐨剉ector錛屽彲鑳戒緷鐒跺崰鎹簡鍫嗕腑鐨勫唴瀛橈紝騫朵嬌鍏跺彉鎴愮鐗囥傚鏋滀綘鐪熺殑闇瑕佽繖鏍鋒潵瀹炵幇娓告垙鐨勮瘽錛屽榪欎釜闂鏈変袱縐嶈В娉曘備竴鏄綘鍙互鍦ㄥ垱寤簐ector鏃惰皟鐢╮eserve()錛屼負浣犲彲鑳介渶瑕佺殑鏈澶ф暟閲忕殑鍏冪礌淇濈暀瓚沖鐨勭┖闂淬傚鏋滆繖涓嶅彲琛岀殑璇濓紝浣犲彲浠ュ己榪玽ector瀹屽叏閲婃斁鍐呭瓨錛?br />
銆銆Vector V;
銆銆// ... elements are inserted into V here
銆銆Vector().swap(v);銆銆// causes v to free its memory

銆銆Set銆乴ist浠ュ強map閮芥病鏈夎繖涓棶棰橈紝榪欐槸鍥犱負浠栦滑涓烘瘡涓厓绱犲垎鍒垎閰嶅拰閲婃斁鍐呭瓨銆?br />
6銆侀珮綰х壒鎬?br />銆銆緙栫▼璇█鐨勬煇浜涚壒鎬т綘鍙兘娌″繀瑕佺敤鍒般傜湅涓婂幓綆鍗曠殑鐗規у彲鑳戒細瀵艱嚧浣庝笅鐨勬晥鐜囥傝岀湅璧鋒潵澶嶆潅鐨勭壒鎬ф病鍑嗘墽琛屽緱寰堝ソ銆侰++鐨勮繖浜涢粦鏆楄钀藉紓甯鎬緷璧栦簬緙栬瘧鍣ㄣ傚綋浣犺浣跨敤瀹冧滑鏃訛紝蹇呴』浜嗚В瀹冧滑鐨勪唬浠楓?br />銆銆C++鐨剆tring灝辨槸涓涓湅璧鋒潵涓嶉敊鐨勪緥瀛愶紝浣嗘槸鍦ㄦ晥鐜囨瀬鍏墮噸瑕佺殑鍦哄悎搴旇閬垮厤浣跨敤錛岃冭檻涓嬮潰鐨勪唬鐮併?br />
銆銆Void Function(const std::string &str)
銆銆{
銆銆}
銆銆Function("hello");

銆銆瀵笷unction()鐨勮皟鐢ㄥ寘鎷簡瀵圭粰瀹歝onst char*鍙傛暟鐨勬瀯閫犲嚱鏁扮殑璋冪敤銆傚湪鏅亶鐨勫疄鐜頒腑錛岃繖涓瀯閫犲嚱鏁版墽琛屼簡涓涓猰alloc()錛屼竴涓猻trlen()錛屼互鍙婁竴涓猰emcpy()錛岃屾瀽鏋勫嚱鏁扮珛鍒諱笂鏉ュ仛浜嗕竴浜涙棤鎰忎箟鐨勪簨鎯呫傦紙鐢變簬璇ヤ緥瀛愪腑鐨剆tring娌℃湁琚洿澶氱殑搴旂敤錛夌劧鍚庡張璺熶簡涓涓猣ree()銆傝繖閲岀殑鍐呭瓨鍒嗛厤瀹屽叏鏄氮璐癸紝鍥犱負瀛楃涓?"hello"鏃╁氨鍦ㄧ▼搴忕殑鏁版嵁孌典腑浜嗐傛垜浠棭灝辨湁瀹冨湪鍐呭瓨涓殑鍓湰浜嗐傚鏋淔unction瀹氫箟浜嗕竴涓猚onst char*鐨勫弬鏁幫紝閭d箞瀹屽叏娌℃湁浜嗕笂闈㈡墍璇寸殑閭d簺棰濆鐨勮皟鐢ㄣ傝繖灝辨槸涓轟簡浣跨敤鏂逛究鐨剆tring鑰屼粯鍑虹殑楂樻槀浠d環銆?br />銆銆妯℃澘鏄晥鐜囩殑瀵圭珛闈㈢殑涓涓緥瀛愶紝鏍規嵁璇█鏍囧噯錛岀紪璇戝櫒鍦ㄦā鏉垮疄渚嬪寲涓轟竴涓叿浣撶殑綾誨瀷鏃朵駭鐢熶唬鐮併傜悊璁轟笂錛岀湅涓婂幓鏄0鏄庝簡涓涓ā鏉匡紝浣嗗嵈瀹為檯浜х敓浜嗗ぇ閲忕殑鐩鎬技鐨勪唬鐮併傚鏋滀綘鏈変簡 class1鐨勬寚閽堢殑vector錛屼篃鏈塩lass2鐨勬寚閽堢殑vector錛屼綘灝卞湪浣犵殑鍙墽琛屾枃浠朵腑鍋氫簡涓や喚鐨剉ector鐨勬嫹璐濄?br />銆銆浜嬪疄涓婏紝澶у鏁扮殑緙栬瘧鍣ㄥ仛寰楁洿濂斤紝棣栧厛錛屽彧鏈夊疄闄呰浣跨敤鍒扮殑妯℃澘鎴愬憳鍑芥暟琚駭鐢熶唬鐮併傚叾嬈★紝濡傛灉浜嬪厛浜嗚В浜嗘紜殑琛屼負錛岀紪璇戝櫒鍙互鍙駭鐢熶竴浠戒唬鐮佺殑鎷瘋礉銆備綘鍙互浠巚ector鐨勪緥瀛愬彂鐜拌繖涓鐐癸紝紜疄鍙駭鐢熶簡涓浠戒唬鐮侊紙涓鑸槸vector錛夈傛湁浜嗗ソ鐨勭紪璇戝櫒錛屾ā鏉胯繕鏄彲浠ュ湪淇濇寔楂樻晥鐨勫悓鏃舵彁渚涗綘涓鑸紪紼嬬殑濂藉銆?br />銆銆C++鐨勪竴浜涚壒鎬э紝姣斿鍒濆鍖栧垪琛ㄤ互鍙婂墠鑷錛屼竴鑸潵璇村彲浠ユ彁楂樻晥鐜囥傝岃薄鍏跺畠鐨勪竴浜涚壒鎬ф瘮濡傝繍綆楃閲嶈澆浠ュ強RTTI鍒欑湅璧鋒潵浼間箮鏄竻鐧界殑錛屼絾鍗存湁鏃跺甫鏉ヤ弗閲嶇殑鏁堢巼闂銆係TL鐨勫鍣ㄥ垯鎻忚堪浜嗙洸鐩浉淇″嚱鏁扮殑綆楁硶榪愯鏃墮棿鍙互濡備綍璁╀綘璇叆姝ч斻傞伩鍏嶄嬌鐢ㄦ綔鍦ㄧ殑浣庢晥鐜囩殑璇█鎴栫被搴撶壒鎬э紝鍚屾椂鑺變簺鏃墮棿鏉ヤ簡瑙d綘鐨勭紪璇戝櫒鐨勫悇縐嶉夐」銆備綘浼氬緢蹇殑瀛︿細璁捐楂樻晥鐨勪唬鐮侊紝騫朵笖瑙e喅鎺変綘鐨勬父鎴忎腑鐨勬晥鐜囬棶棰樸?br />

]]>
(杞級鍓栨瀽C++鏍囧噯搴撴櫤鑳芥寚閽?std::auto_ptr) http://www.shnenglu.com/yuanyajie/archive/2006/12/15/16489.html娓呮簮娓告皯娓呮簮娓告皯Fri, 15 Dec 2006 09:35:00 GMThttp://www.shnenglu.com/yuanyajie/archive/2006/12/15/16489.htmlhttp://www.shnenglu.com/yuanyajie/comments/16489.htmlhttp://www.shnenglu.com/yuanyajie/archive/2006/12/15/16489.html#Feedback1http://www.shnenglu.com/yuanyajie/comments/commentRss/16489.htmlhttp://www.shnenglu.com/yuanyajie/services/trackbacks/16489.html闃呰鍏ㄦ枃

]]>
濡備綍灝唂loat杞崲涓簊tring http://www.shnenglu.com/yuanyajie/archive/2006/12/15/16476.html娓呮簮娓告皯娓呮簮娓告皯Fri, 15 Dec 2006 03:18:00 GMThttp://www.shnenglu.com/yuanyajie/archive/2006/12/15/16476.htmlhttp://www.shnenglu.com/yuanyajie/comments/16476.htmlhttp://www.shnenglu.com/yuanyajie/archive/2006/12/15/16476.html#Feedback0http://www.shnenglu.com/yuanyajie/comments/commentRss/16476.htmlhttp://www.shnenglu.com/yuanyajie/services/trackbacks/16476.html

聽聽聽聽 鍙兘鏈夊ソ澶氫漢錛屽寘鎷珻璇█鑰佹墜閮戒笉鐭ラ亾濡備綍灝唂loat鏁版嵁杞崲涓簊tring錛屾垜灝辨槸榪欐牱錛屼粖澶╂煡浜嗕竴涓婱SDN錛屾墠鐭ラ亾C鎻愪緵浜哶gcvt鍑芥暟瀹炵幇榪欎釜鍔熻兘錛屾敹鑾風潃瀹炰笉灝忥紝涓轟簡鏂逛究鑷繁鏌ヨ錛屼篃涓轟簡閭d簺鍍忔垜榪欐牱鐨勭綉鍙嬭兘澶熶簡瑙h鍑芥暟鐨勫叿浣撶敤娉曪紝鎴戞妸MSDN鐨勫師鏂囧師灝佷笉鍔ㄦ妱褰曞涓嬶細

_gcvt

Converts a floating-point value to a string, which it stores in a buffer.

char *_gcvt( double value , int digits , char * buffer );

Routine Required Header Compatibility
_gcvt <stdlib.h> Win 95, Win NT

For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version

Return Value

_gcvt returns a pointer to the string of digits. There is no error return.

Parameters

value

Value to be converted

digits

Number of significant digits stored

buffer

Storage location for result

Remarks

The _gcvt function converts a floating-point value to a character string (which includes a decimal point and a possible sign byte) and stores the string in buffer. The buffer should be large enough to accommodate the converted value plus a terminating null character, which is appended automatically. If a buffer size of digits + 1 is used, the function overwrites the end of the buffer. This is because the converted string includes a decimal point and can contain sign and exponent information. There is no provision for overflow. _gcvt attempts to produce digits digits in decimal format. If it cannot, it produces digits digits in exponential format. Trailing zeros may be suppressed in the conversion.

Example

								/* _GCVT.C: This program converts -3.1415e5 * to its string representation. */#include <stdlib.h>#include <stdio.h>void main( void ){   char buffer[50];   double source = -3.1415e5;   _gcvt( source, 7, buffer );   printf( "source: %f  buffer: '%s'\n", source, buffer );   _gcvt( source, 7, buffer );   printf( "source: %e  buffer: '%s'\n", source, buffer );}
						

Output

								source: -314150.000000  buffer: '-314150.'source: -3.141500e+005  buffer: '-314150.'
						


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=708935





#lanno聽鍙戣〃浜?006-05-05 18:26:00聽聽IP: 222.35.68.*
闀胯璇嗕簡錛屼亢鎬繪槸榪欐牱杞寲鐨勶細
char str[260];
float f = -3.1415926;
float f1 = 263e-5;
sprintf(str,"%f",f);
printf("%s\n",str);
sprintf(str,"%f",f1);
printf("%s\n",str);

#Skyman聽鍙戣〃浜?006-05-05 21:35:00聽聽IP: 202.202.10.*
浣犺繖鏍峰仛涔熻
浣嗘病鏈夎繖鏍風伒媧?
鏄惂錛?/div>

#zhnde聽鍙戣〃浜?006-05-11 20:15:00聽聽IP: 129.69.212.*
鐏墊椿鍚楋紵 鑳藉叿浣撹В閲婁竴涓嬪悧錛?/div>

#Skyman聽鍙戣〃浜?006-05-11 22:03:00聽聽IP: 202.202.10.*
鑷沖皯鍙互鏂逛究鐨勬帶鍒舵湁鏁堟暟瀛楃殑浣嶆暟鍟娿?/div>

#ztwaker聽鍙戣〃浜?006-07-28 12:40:00聽聽IP: 61.144.207.*
/*C++ impl*/
string cvt(const float fval)
{
stringstream ss;
ss << fval;
return ss.str();
}

......///

#ztwaker聽鍙戣〃浜?006-07-28 12:46:00聽聽IP: 61.144.207.*
鍔犱笂鏈夋晥鏁板瓧浣嶆暟鎺у埗

string cvt(const float f, const int prec)
{
stringstream ss;
ss.precision(prec);
ss << f;
return ss.str();
}



]]>澶存枃浠跺寘鍚棶棰?/title><link>http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16445.html</link><dc:creator>娓呮簮娓告皯</dc:creator><author>娓呮簮娓告皯</author><pubDate>Thu, 14 Dec 2006 10:16:00 GMT</pubDate><guid>http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16445.html</guid><wfw:comment>http://www.shnenglu.com/yuanyajie/comments/16445.html</wfw:comment><comments>http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16445.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/yuanyajie/comments/commentRss/16445.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/yuanyajie/services/trackbacks/16445.html</trackback:ping><description><![CDATA[ <div id="hvzpftn" class="postTitle"> <a > <img height="13" src="http://blog.csdn.net/images/zhuan.gif" width="15" border="0" />聽C++涓熀紜綾諱簰鐩稿紩鐢ㄥ甫鏉ョ殑闂</a> </div> <div id="hvzpftn" class="postText"> <p> <font size="3">鍦ㄤ竴浜涘ぇ鐨勫伐紼嬩腑錛屽彲鑳戒細鍖呭惈鍑犲崄涓熀紜綾伙紝鍏嶄笉浜嗕箣闂翠細浜掔浉寮曠敤</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">(</span> </font> <font size="3">涓嶆弧瓚崇戶鎵垮叧緋伙紝鑰屾槸緇勫悎鍏崇郴</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">)</span> </font> <font size="3">銆備篃灝辨槸闇瑕佷簰鐩稿0鏄庛傚ソ浜嗭紝榪欐椂鍊欎細甯︽潵涓浜涙販涔便傚鏋滃鐞嗗緱涓嶅ソ錛屼細鎼炲緱涓鍥㈢碂錛屾牴鎹垜鐨勭粡楠岋紝綆鍗曡皥璋堣嚜宸茬殑澶勭悊鍔炴硶錛?/font> </p> <p> <font size="3">緙栫爜鏃訛紝鎴戜滑涓鑸細灝介噺閬垮厤</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">include</span> </font> <font size="3">澶存枃浠訛紝鑰屾槸閲囩敤澹版槑 </font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">class XXX</span> </font> <font size="3">銆?/font> <font size="3">浣嗘湁鏃跺欒繕鏄繀欏葷敤</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">Include</span> </font> <font size="3">澶存枃浠訛紝閭d箞錛屼袱鑰呯殑鍒掑垎鍦ㄤ簬浠涔堝憿錛?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br /> <br /> </span> </font> <font size="3">搴旇鏄緢鏄庣‘鐨勶紝浣嗕功涓婂ソ鍍忛兘灝戞湁鎻愬強銆?/font> </p> <p> <font size="3">棣栧厛錛?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br /> </span> </font> <font size="3">鎴戜滑瑕佹槑鐧戒負浠涔堣鐢ㄥ0鏄庡彇浠eご鏂囦歡鍖呭惈錛氬浜嗭紝鏄負浜嗛伩鍏嶆棤蹇呰鐨勯噸緙栬瘧</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">(</span> </font> <font size="3">鍦ㄥご鏂囦歡鍙戠敓鍙樻洿鏃?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">)</span> </font> <font size="3">銆?/font> <font size="3">宸ョ▼杈冨ぇ錛屼綆閫熸満錛屾垨鍩虹綾葷粡甯稿彉鏇?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">(</span> </font> <font size="3">涓嶅悎鐞嗙殑璁捐鍚?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">)</span> </font> <font size="3">錛岀紪璇戦熷害榪樻槸浼氬湪鎰忕殑錛?/font> <font size="3">鍙﹀錛屾洿涓洪噸瑕佺殑鏄紝閲囩敤澹版槑鍙檷浣庝唬鐮?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">(class)</span> </font> <font size="3">涔嬮棿鐨勮棔鍚堝害錛岃繖涔熸槸闈㈠悜瀵硅薄璁捐鐨勪竴澶у師鍒欍?/font> </p> <p> <font size="3">浜岋細涓鑸師鍒欙細</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br />a. </span> </font> <font size="3">澶存枃浠朵腑灝介噺灝?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">include, </span> </font> <font size="3">濡傛灉鍙互綆鍗曠敵鏄?</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">class clsOld; </span> </font> <font size="3">瑙e喅錛岄偅鏈濂姐傚噺灝戞病鏈夊繀瑕佺殑</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">include錛?br />b. </span> </font> <font size="3">瀹炵幇鏂囦歡涓篃瑕佸敖閲忓皯</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">include,</span> </font> <font size="3">涓嶈</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">include</span> </font> <font size="3">娌℃湁鐢ㄥ埌鐨勫ご鏂囦歡銆?</font> </p> <p> <font size="3">涓夛細閭d粈涔堟椂鍊欏彲浠ュ彧鏄畝鍗曞0鏄?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">class clsOld</span> </font> <font size="3">鍛紵</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br /> </span> </font> <font size="3">綆鍗曠殑璇達細涓嶉渶瑕佺煡閬?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">clsOld</span> </font> <font size="3">鐨勫唴瀛樺竷灞鐨勭敤娉曢兘鍙互</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">(</span> </font> <font size="3">闈欐佹垚鍛橀櫎澶?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">)</span> </font> <font size="3">錛屼篃灝辨槸璁插鏋滄槸鎸囬拡鎴栧紩鐢ㄦ柟寮忕殑</font> <font size="3">閮借銆?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br /> </span> </font> <font size="3">姣斿錛?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br />聽聽 clsOld * m_pOld;聽聽聽 //</span> </font> <font size="3">鎸囬拡鍗?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">4</span> </font> <font size="3">涓瓧鑺傞暱</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br />聽聽 clsOld & test(clsOld * pOld) {return *pOld};<br />聽 </span> </font> <font size="3">涓鍒?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">OK</span> </font> <font size="3">銆?/font> </p> <p> <font size="3">鍥涳細浠涔堟椂鍊欎笉鑳界畝鍗曞0鏄?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">class clsOld</span> </font> <font size="3">錛屽繀欏?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">include</span> </font> <font size="3">鍛紵</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br /> </span> </font> <font size="3">涓嶆弧瓚充笁鐨勬儏鍐典笅錛?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br />聽</span> </font> <font size="3">姣斿錛?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br />聽聽聽聽聽聽聽聽聽clsOld m_Objold;聽 //</span> </font> <font size="3">涓嶇煡閬撳崰鎹ぇ灝忥紝蹇呴』瑕侀氳繃瀹冪殑鍏蜂綋澹版槑鏉ヨ綆?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br /> </span> </font> <font size="3">鍘熷洜寰堢畝鍗曪紝鎯蟲兂浣犺璁$畻</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">sizeof(classNew)</span> </font> <font size="3">錛屼絾榪?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">clsOld</span> </font> <font size="3">鐨?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">size</span> </font> <font size="3">閮戒笉鐭ラ亾錛岀紪璇戝櫒鏄劇劧浼氭棤鑳戒負鍔涖?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br /> <br /> </span> </font> <font size="3">鐗規畩鎯呭喌錛?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br />聽聽聽聽聽聽聽聽聽聽int test() { return clsOld::m_sInt;}<br />聽聽聽聽</span> </font> <font size="3">闈欐佹垚鍛樿皟鐢紝鎯蟲潵搴旇鏄笉闇瑕佺煡閬撳唴瀛樺竷灞鐨勶紝浣嗗洜涓洪渶瑕佺煡閬?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">m_sInt</span> </font> <font size="3">鏄睘浜?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">clsOld</span> </font> <font size="3">鍛藉悕絀洪棿</font> <font size="3">鐨勶紝濡傛灉鍙0鏄?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">class xxx</span> </font> <font size="3">鏄劇劧鏄笉瓚充互璇存槑鐨勶紝鎵浠ュ繀欏誨寘鍚ご鏂囦歡銆?/font> </p> <p> <font size="3">緇間笂鎵榪幫紝鎴戞湁浠ヤ笅鍑犵偣寤鴻錛?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> <br />1</span> </font> <font size="3">錛氬鏋滄湁鍏卞悓鐩稿叧渚濊禆</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">(</span> </font> <font size="3">蹇呴』</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">include)</span> </font> <font size="3">鐨勭被錛屾瘮濡?</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">A,B</span> </font> <font size="3">閮戒緷璧?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">D </span> </font> <font size="3">鍙互鏀懼湪涓璧鳳紝鐒跺悗鐩存帴 </font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">Include "d" </span> </font> <font size="3">綾葷殑浣跨敤鑰呭彧闇鍏沖績涓庢湰綾繪毚闇插嚭鐨勭浉鍏崇被鍨嬶紝鍐呴儴鐢ㄥ埌鐨勭被鍨嬩笉鐢ㄥ幓綆?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">(</span> </font> <font size="3">涓嶇敤鑷凡鍘?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">include d)</span> </font> <font size="3">銆傝繖鏍?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> </span> </font> <font size="3">緇欏嚭鐨?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">class</span> </font> <font size="3">錛岃皟鐢ㄨ呮墠鏇村ソ鐢?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">(</span> </font> <font size="3">涓嶇敤鍘葷湅浠g爜鏌ユ壘錛屾槸涓嶆槸榪橀渶瑕佸寘鍚叾瀹冨ご鏂囦歡</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">)</span> </font> <font size="3">銆?/font> </p> <p> <font face="Times New Roman, serif" size="3"> <span lang="en-US">2</span> </font> <font size="3">錛氬鏋?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">A</span> </font> <font size="3">綾諱緷璧?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">D B</span> </font> <font size="3">綾諱笉渚濊禆</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">D</span> </font> <font size="3">錛屽彲浠ユ妸瀹冧滑鍒嗗紑涓や釜澶存枃浠躲傚悇鑷?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">Include</span> </font> <font size="3">銆傝繖鏍峰彲閬垮厤褰?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">D</span> </font> <font size="3">鍙戠敓鍙樺寲鏃訛紝</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> </span> </font> <font size="3">閬垮厤涓嶅繀瑕侀噸緙栬瘧銆?/font> </p> <p> <font face="Times New Roman, serif" size="3"> <span lang="en-US">3</span> </font> <font size="3">錛氱被涓敖閲忛噰鐢ㄦ寚閽堟垨寮曠敤鏂瑰紡璋冪敤鍏跺畠綾伙紝榪欐牱灝卞彲浠ュ彧澹版槑</font> <font face="Times New Roman, serif" size="3"> <span lang="en-US">class xxx</span> </font> <font size="3">浜嗐傚茍涓旇繖涔熺鍚堣祫婧愭渶浼?/font> <font face="Times New Roman, serif" size="3"> <span lang="en-US"> </span> </font> <font size="3">鍒╃敤錛屾洿鍒╀簬浣跨敤澶氭併?br /><br />/--------------------------------------------------/////////////////////////////////////////////////////////////////////////////<br /></font> </p> <div id="hvzpftn" class="postTitle"> <a > <img height="13" src="http://blog.csdn.net/images/authorship.gif" width="15" border="0" /> <font color="#009933">聽瀵逛簬VC++涓殑澶存枃浠跺寘鍚煎緱娉ㄦ剰鐨勪竴鐐?/font> </a> </div> <div id="hvzpftn" class="postText"> <p class="MsoNormal" style="MARGIN-BOTTOM: 15.6pt"> <span style="FONT-FAMILY: 瀹嬩綋">銆銆</span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 瀹嬩綋">浠婂ぉ鐢?span lang="EN-US">VC++</span>緙栬瘧鎴戣繖鏄ㄥぉ鍐欑殑浠g爜鏃跺彂鐜版繪槸閫氫笉榪囷紝鐪嬪埌澶ч儴鍒嗙殑閿欒閮芥槸涓庝竴涓被鐨勫畾涔夋湁鍏熾?span lang="EN-US"><?XML:NAMESPACE PREFIX = O /?><o:p></o:p></span></span> </p> <p class="MsoNormal" style="MARGIN-BOTTOM: 15.6pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 瀹嬩綋">銆銆鏄庢槑鎴戝凡緇忓湪榪欎釜綾諱腑瀹氫箟浜嗕竴涓垚鍛樺彉閲忥紝鍙紪璇戝櫒鍋忚璇撮偅涓彉閲忎笉鏄繖涓被鐨勬垚鍛樸傛病鍔炴硶錛屾壘浜嗗崐澶╁師鍥犺繕鏄病鏈夊ご緇傚啀涓夊湴紜涓嶆槸鎴?span lang="EN-US">C++</span>鐨勮娉曢敊璇箣鍚庛傛垜寮濮嬫鐤戞槸涓嶆槸澶存枃浠剁殑闂銆傚洜涓哄綋鎴戞妸涓浜?strong><span lang="EN-US">#include "..."</span></strong>鎼埌<strong><span lang="EN-US">#pragma once</span></strong>涔嬪墠鎴栬呬箣鍚庯紝閿欒鎶ュ憡灝變細鍙戠敓鍙樺寲銆傛湁鏃跺氨鍙槸璇存垜鐨勪竴涓被<strong>閲嶅瀹氫箟</strong>浜嗐?span lang="EN-US"><o:p></o:p></span></span> </p> <p class="MsoNormal" style="MARGIN-BOTTOM: 15.6pt; TEXT-INDENT: 24pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 瀹嬩綋">浠ュ墠鐢?span lang="EN-US">C</span>鍐欏ご鏂囦歡鐨勬椂鍊欓兘鏄敤瀹忓畾涔夋潵閬垮厤閲嶅鍖呭惈<strong>澶存枃浠?/strong>銆?span lang="EN-US">C++</span>閲岃櫧鐒朵篃榪樺彲鐢ㄨ繖涓柟娉曪紝浣?span lang="EN-US">VC++</span>灝辨槸涓嶇敤錛屽畠鐢ㄧ殑鏄?strong><span lang="EN-US">#pragma once</span></strong>銆傝繖涓鍙樺寲瀵規垜鏉ヨ鐪熸槸鏈夌偣鎽鎬笉鐫澶磋剳浜嗭紝鎴戜笉娓呮<strong><span lang="EN-US">#pragma once</span></strong>鐨勫伐浣滄柟寮忔槸濡備綍鐨勩傝屾垜鐜板湪閬囧埌鐨勯棶棰樺張涓庤繖涓湁鍏熾傛壘鎵劇綉涓婄殑鍐呭鐪嬪惂銆備笂<span lang="EN-US">google</span>鎼滀簡鍗婂ぉ錛岄偅浜涜鍧涢噷鐨勫洖絳斿熀鏈笂閮芥槸鈥滈槻姝㈤噸澶嶅寘鍚?strong>澶存枃浠?/strong>鐨勶紝浣犱笉鐢ㄧ浠栥傗濊繖鏍風殑銆傚彲鏄笉綆′粬鐪熺殑琛屽悧錛熸垜鍒氬鐨?span lang="EN-US">VC++</span>錛屾垜鐪嬬殑涔︿笂鏄病鏈夎榪囪繖涓唴瀹圭殑銆傛庝箞鍦ㄧ綉涓婁篃鎼滀笉鍒板憿錛熺粡榪囨垜涓嶆噲鐨勫姫鍔涳紝緇堜簬璁╂垜鎵懼埌浜嗕竴綃?span lang="EN-US"><a ><font color="#009933">http://www.yesky.com/127/1736627_3.shtml</font></a></span>銆?span lang="EN-US"><o:p></o:p></span></span> </p> <p class="MsoNormal" style="MARGIN-BOTTOM: 15.6pt; TEXT-INDENT: 24pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 瀹嬩綋">浣滆?span lang="EN-US">Adding</span>鐨勮繖孌佃瘽瀵規垜鐨勫府鍔╂渶澶э細鈥?/span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 妤蜂綋_GB2312">鏃㈢劧浣跨敤浜嗗寘鍚枃浠訛紝涓轟粈涔堣繕瑕佸湪<span lang="EN-US">class CMainFrame</span>鍓嶆坊鍔?span lang="EN-US">"<strong>class CViewerView;</strong>"</span>絳変唬鐮侊紵濡傛灉鐢ㄥ寘鍚枃浠朵唬鏇垮畠錛岃涓嶈錛熴銆寰堝<span lang="EN-US">Visual C++</span>涔︾睄瀵硅繖浜涢棶棰橀伩鑰屼笉璋堬紝浣嗗疄闄呬笂榪欐槸涓涓噸瑕佺殑闂銆傚鏋滀笉鑳界悊瑙d笂榪頒唬鐮侊紝鎴戜滑寰堝彲鑳戒負鏃犳硶閫氳繃緙栬瘧鑰屽ぇ浼よ剳絳嬨傝繖浜涢棶棰樼殑鍑虹幇鏄熀浜庤繖鏍風殑涓浜涗簨瀹烇細鍦ㄦ垜浠敤鏍囧噯<span lang="EN-US">C/C++</span>璁捐紼嬪簭鏃訛紝鏈変竴涓師鍒欏嵆涓や釜浠g爜鏂囦歡涓嶈兘鐩鎬簰鍖呭惈錛岃屼笖澶氭鍖呭惈榪樹細閫犳垚閲嶅瀹氫箟鐨勯敊璇備負浜嗚В鍐寵繖涓毦棰橈紝<span lang="EN-US"> Visual C++</span>浣跨敤<span lang="EN-US">#pragma once</span>鏉ラ氱煡緙栬瘧鍣ㄥ湪鐢熸垚鏃跺彧鍖呭惈<span lang="EN-US">(</span>鎵撳紑<span lang="EN-US">)</span>涓嬈★紝涔熷氨鏄錛屽湪絎竴嬈?span lang="EN-US">#include</span>涔嬪悗錛岀紪璇戝櫒閲嶆柊鐢熸垚鏃朵笉浼氬啀瀵硅繖浜涘寘鍚枃浠惰繘琛屽寘鍚?span lang="EN-US">(</span>鎵撳紑<span lang="EN-US">)</span>鍜岃鍙栵紝鍥犳鎴戜滑鐪嬪埌鍦ㄧ敤鍚戝鍒涘緩鐨勬墍鏈夌被鐨勫ご鏂囦歡涓湁<strong><span lang="EN-US">#pragma once</span></strong>璇彞灝變笉浼氳寰楀鎬簡銆傜劧鑰?span style="COLOR: red">姝f槸鐢變簬榪欎釜璇彞鑰岄犳垚浜嗗湪絎簩嬈?span lang="EN-US">#include</span>鍚庣紪璇戝櫒鏃犳硶姝g‘璇嗗埆鎵寮曠敤鐨勭被銆傚洜姝わ紝鎴戜滑鍦ㄧ浉浜掑寘鍚椂榪橀渶瑕佸姞鍏ョ被浼?span lang="EN-US">class CViewerView</span>榪欐牱鐨勮鍙ユ潵閫氱煡緙栬瘧鍣ㄨ繖涓被鏄竴涓疄闄呯殑璋冪敤銆?/span></span> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 瀹嬩綋">鈥?span lang="EN-US"><o:p></o:p></span></span> </p> <p class="MsoNormal" style="MARGIN-BOTTOM: 15.6pt; TEXT-INDENT: 24pt"> <span style="FONT-SIZE: 12pt; FONT-FAMILY: 瀹嬩綋">鐪嬫潵灝辨槸榪欎釜闂浜嗐傛妸鎴戠殑浠g爜涓鍔犱笂閭d簺綾葷殑澹版槑浠ュ悗鏋滅劧閫氳繃浜嗙紪璇戙傛垜鎰熻榪欎釜闂鍦?span lang="EN-US">VC++</span>閲岄潰鏉ヨ搴旇鏄煎緱娉ㄦ剰鐨勩傚彲鑳芥槸鐢變簬鎴戝垰瀛?span lang="EN-US">VC++</span>錛岃璇嗗お灝戠殑鍘熸晠鍚с傛棤璁哄浣曞厛璁頒笅鏉ワ紝璇翠笉瀹氫篃鏈変漢鍦ㄤ負榪欎釜<strong><span lang="EN-US">#pragma once</span></strong>浼よ剳絳嬪憿銆?span lang="EN-US"><o:p></o:p></span></span> </p> </div> </div> <img src ="http://www.shnenglu.com/yuanyajie/aggbug/16445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/yuanyajie/" target="_blank">娓呮簮娓告皯</a> 2006-12-14 18:16 <a href="http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16445.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐑︿漢鐨勭被鍨嬭漿鎹?/title><link>http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16429.html</link><dc:creator>娓呮簮娓告皯</dc:creator><author>娓呮簮娓告皯</author><pubDate>Thu, 14 Dec 2006 06:22:00 GMT</pubDate><guid>http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16429.html</guid><wfw:comment>http://www.shnenglu.com/yuanyajie/comments/16429.html</wfw:comment><comments>http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16429.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/yuanyajie/comments/commentRss/16429.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/yuanyajie/services/trackbacks/16429.html</trackback:ping><description><![CDATA[ <h4 class="TextColor1" id="subjcns!F1593BEB77A25884!108" style="MARGIN-BOTTOM: 0px">瀵規湁鍏蟲暟鎹被鍨嬭漿鎹㈢殑鏁寸悊</h4> <div class="hvzpftn" id="msgcns!F1593BEB77A25884!108"> <div> <p>int i = 100;<br />long l = 2001;<br />float f=300.2;<br />double d=12345.119;<br />char username[]="紼嬩僵鍚?;<br />char temp[200];<br />char *buf;<br />CString str;<br />_variant_t v1;<br />_bstr_t v2;<br /><br /><font color="#6699ff"><b>涓銆佸叾瀹冩暟鎹被鍨嬭漿鎹負瀛楃涓?/b></font><br /></p> <ul> <li> <font color="#6699ff">鐭暣鍨?int)</font> <br />itoa(i,temp,10);///灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗<br />itoa(i,temp,2); ///鎸変簩榪涘埗鏂瑰紡杞崲 </li> <li> <font color="#6699ff">闀挎暣鍨?long)</font> <br />ltoa(l,temp,10); </li> <li> <font color="#6699ff">嫻偣鏁?float,double)</font> <br />鐢╢cvt鍙互瀹屾垚杞崲,榪欐槸MSDN涓殑渚嬪瓙:<br />int decimal, sign; <br />char *buffer; <br />double source = 3.1415926535; <br />buffer = _fcvt( source, 7, &decimal, &sign ); <br />榪愯緇撴灉:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0<br />decimal琛ㄧず灝忔暟鐐圭殑浣嶇疆,sign琛ㄧず絎﹀彿:0涓烘鏁幫紝1涓鴻礋鏁? </li> <li> <font color="#6699ff">CString鍙橀噺</font> <br />str = "2008鍖椾含濂ヨ繍";<br />buf = (LPSTR)(LPCTSTR)str; </li> <li> <font color="#6699ff">BSTR鍙橀噺</font> <br />BSTR bstrValue = ::SysAllocString(L"紼嬪簭鍛?); <br />char * buf = _com_util::ConvertBSTRToString(bstrValue); <br />SysFreeString(bstrValue); <br />AfxMessageBox(buf); <br />delete(buf); </li> <li> <font color="#6699ff">CComBSTR鍙橀噺</font> <br />CComBSTR bstrVar("test"); <br />char *buf = _com_util::ConvertBSTRToString(bstrVar.m_str); <br />AfxMessageBox(buf); <br />delete(buf); <br /></li> <li> <font color="#6699ff">_bstr_t鍙橀噺</font> <br />_bstr_t綾誨瀷鏄BSTR鐨勫皝瑁咃紝鍥犱負宸茬粡閲嶈澆浜?鎿嶄綔絎︼紝鎵浠ュ緢瀹規槗浣跨敤<br />_bstr_t bstrVar("test"); <br />const char *buf = bstrVar;///涓嶈淇敼buf涓殑鍐呭 <br />AfxMessageBox(buf); <br /><br /></li> <li> <font color="#6699ff">閫氱敤鏂規硶(閽堝闈濩OM鏁版嵁綾誨瀷)</font> <br />鐢╯printf瀹屾垚杞崲<br /><pre>char buffer[200]; char c = '1'; int i = 35; long j = 1000; float f = 1.7320534f; sprintf( buffer, "%c",c); sprintf( buffer, "%d",i); sprintf( buffer, "%d",j); sprintf( buffer, "%f",f); </pre></li> </ul> <p> <b> <font color="#6699ff">浜屻佸瓧絎︿覆杞崲涓哄叾瀹冩暟鎹被鍨?/font> </b> <br />strcpy(temp,"123"); </p> <ul> <li> <font color="#6699ff">鐭暣鍨?int)</font> <br />i = atoi(temp); </li> <li> <font color="#6699ff">闀挎暣鍨?long)</font> <br />l = atol(temp); </li> <li> <font color="#6699ff">嫻偣(double)</font> <br />d = atof(temp); </li> <li> <font color="#6699ff">CString鍙橀噺</font> <br />CString name = temp; </li> <li> <font color="#6699ff">BSTR鍙橀噺</font> <br />BSTR bstrValue = ::SysAllocString(L"紼嬪簭鍛?); <br />...///瀹屾垚瀵筨strValue鐨勪嬌鐢?br />SysFreeString(bstrValue); <br /></li> <li> <font color="#6699ff">CComBSTR鍙橀噺</font> <br />CComBSTR綾誨瀷鍙橀噺鍙互鐩存帴璧嬪?br />CComBSTR bstrVar1("test");<br />CComBSTR bstrVar2(temp);<br /></li> <li> <font color="#6699ff">_bstr_t鍙橀噺</font> <br />_bstr_t綾誨瀷鐨勫彉閲忓彲浠ョ洿鎺ヨ祴鍊?br />_bstr_t bstrVar1("test"); <br />_bstr_t bstrVar2(temp); <br /><br /></li> </ul> <p> <b> <font color="#6699ff">涓夈佸叾瀹冩暟鎹被鍨嬭漿鎹㈠埌CString</font> </b> <br />浣跨敤CString鐨勬垚鍛樺嚱鏁癋ormat鏉ヨ漿鎹?渚嬪:<br /></p> <ul> <li>鏁存暟(int)<br />str.Format("%d",i); </li> <li>嫻偣鏁?float)<br />str.Format("%f",i); </li> <li>瀛楃涓叉寚閽?char *)絳夊凡緇忚CString鏋勯犲嚱鏁版敮鎸佺殑鏁版嵁綾誨瀷鍙互鐩存帴璧嬪?br />str = username; </li> <li>瀵逛簬Format鎵涓嶆敮鎸佺殑鏁版嵁綾誨瀷錛屽彲浠ラ氳繃涓婇潰鎵璇寸殑鍏充簬鍏跺畠鏁版嵁綾誨瀷杞寲鍒癱har *鐨勬柟娉曞厛杞埌char *錛岀劧鍚庤祴鍊肩粰CString鍙橀噺銆?br /></li> </ul> <p> <b> <font color="#6699ff">鍥涖丅STR銆乢bstr_t涓嶤ComBSTR</font> </b> <br /> </p> <ul> <li>CComBSTR 鏄疉TL瀵笲STR鐨勫皝瑁咃紝_bstr_t鏄疌++瀵笲STR鐨勫皝瑁?BSTR鏄?2浣嶆寚閽?浣嗗茍涓嶇洿鎺ユ寚鍚戝瓧涓茬殑緙撳啿鍖恒?br />char *杞崲鍒癇STR鍙互榪欐牱: <br />BSTR b=_com_util::ConvertStringToBSTR("鏁版嵁");///浣跨敤鍓嶉渶瑕佸姞涓奵omutil.h鍜宑omsupp.lib<br />SysFreeString(bstrValue); <br />鍙嶄箣鍙互浣跨敤<br />char *p=_com_util::ConvertBSTRToString(b);<br />delete p;<br />鍏蜂綋鍙互鍙傝冧竴錛屼簩孌佃惤閲岀殑鍏蜂綋璇存槑銆?br /><br />CComBSTR涓巁bstr_t瀵瑰ぇ閲忕殑鎿嶄綔絎﹁繘琛屼簡閲嶈澆錛屽彲浠ョ洿鎺ヨ繘琛?,!=,==絳夋搷浣滐紝鎵浠ヤ嬌鐢ㄩ潪甯告柟渚褲?br />鐗瑰埆鏄痏bstr_t,寤鴻澶у浣跨敤瀹冦?br /></li> </ul> <p> <b> <font color="#6699ff">浜斻乂ARIANT 銆乢variant_t 涓?COleVariant</font> </b> <br /> </p> <ul> <li>VARIANT鐨勭粨鏋勫彲浠ュ弬鑰冨ご鏂囦歡VC98\Include\OAIDL.H涓叧浜庣粨鏋勪綋tagVARIANT鐨勫畾涔夈?br />瀵逛簬VARIANT鍙橀噺鐨勮祴鍊鹼細棣栧厛緇檝t鎴愬憳璧嬪鹼紝鎸囨槑鏁版嵁綾誨瀷錛屽啀瀵硅仈鍚堢粨鏋勪腑鐩稿悓鏁版嵁綾誨瀷鐨勫彉閲忚祴鍊鹼紝涓句釜渚嬪瓙錛?br />VARIANT va;<br />int a=2001;<br />va.vt=VT_I4;///鎸囨槑鏁村瀷鏁版嵁<br />va.lVal=a; ///璧嬪? </li> <li> </li> <li> </li> <li>_variant_t鏄疺ARIANT鐨勫皝瑁呯被錛屽叾璧嬪煎彲浠ヤ嬌鐢ㄥ己鍒剁被鍨嬭漿鎹紝鍏舵瀯閫犲嚱鏁頒細鑷姩澶勭悊榪欎簺鏁版嵁綾誨瀷銆?br />浣跨敤鏃墮渶鍔犱笂#include <comdef.h><br />渚嬪錛?br />long l=222;<br />ing i=100;<br />_variant_t lVal(l);<br />lVal = (long)i; </li> <li> <br />COleVariant鐨勪嬌鐢ㄤ笌_variant_t鐨勬柟娉曞熀鏈竴鏍鳳紝璇峰弬鑰冨涓嬩緥瀛愶細<br />COleVariant v3 = "瀛楃涓?, v4 = (long)1999;<br />CString str =(BSTR)v3.pbstrVal;<br />long i = v4.lVal;<br /><br />////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// </li> <li> <p>鏈富棰樻紨紺哄浣曞皢鍚勭 C++ 瀛楃涓茬被鍨嬭漿鎹負鍏朵粬瀛楃涓層傚彲浠ヨ漿鎹㈢殑瀛楃涓茬被鍨嬪寘鎷?<strong>char *</strong>銆?strong>wchar_t*</strong>銆?a onclick="javascript:TrackThisClick('ctl00_LibFrame_ctl02','ctl00_LibFrame_ctl03',this);" ><font color="#000080">_bstr_t</font></a>銆?a onclick="javascript:TrackThisClick('ctl00_LibFrame_ctl02','ctl00_LibFrame_ctl04',this);" ><font color="#000080">CComBSTR</font></a>銆?a onclick="javascript:TrackThisClick('ctl00_LibFrame_ctl02','ctl00_LibFrame_ctl05',this);" ><font color="#000080">CString</font></a>銆?a onclick="javascript:TrackThisClick('ctl00_LibFrame_ctl02','ctl00_LibFrame_ctl06',this);" ><font color="#000080">basic_string</font></a> 鍜?<a onclick="javascript:TrackThisClick('ctl00_LibFrame_ctl02','ctl00_LibFrame_ctl07',this);" ><font color="#000080">System.String</font></a>銆傚湪鎵鏈夋儏鍐典笅錛屽湪灝嗗瓧絎︿覆杞崲涓烘柊綾誨瀷鏃訛紝閮戒細鍒涘緩瀛楃涓茬殑鍓湰銆傚鏂板瓧絎︿覆榪涜鐨勪換浣曟洿鏀歸兘涓嶄細褰卞搷鍘熷瀛楃涓詫紝鍙嶄箣浜︾劧銆?/p> <h1 class="heading">浠?char * 杞崲</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection0"> </div> <h1 class="heading">紺轟緥</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection1"> <h3 class="subHeading">璇存槑</h3> <div id="hvzpftn" class="subSection"> <p>姝ょず渚嬫紨紺哄浣曚粠 <strong>char *</strong> 杞崲涓轟笂闈㈠垪鍑虹殑鍏朵粬瀛楃涓茬被鍨嬨?/p> </div> <div id="hvzpftn" class="subSection"> <div id="hvzpftn" class="code" id="ctl00_LibFrame_ctl08_other"> <div id="hvzpftn" class="CodeSnippetTitleBar"> <div id="hvzpftn" class="CodeDisplayLanguage"> </div> </div> <pre class="code" id="ctl00_LibFrame_ctl08other" space="preserve">// convert_from_char.cpp // compile with /clr /link comsuppw.lib #include <iostream> #include <stdlib.h> #include <string> #include "atlbase.h" #include "atlstr.h" #include "comutil.h" using namespace std; using namespace System; int main() { char *orig = "Hello, World!"; cout << orig << " (char *)" << endl; // Convert to a wchar_t* size_t origsize = strlen(orig) + 1; const size_t newsize = 100; size_t convertedChars = 0; wchar_t wcstring[newsize]; mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE); wcscat_s(wcstring, L" (wchar_t *)"); wcout << wcstring << endl; // Convert to a _bstr_t _bstr_t bstrt(orig); bstrt += " (_bstr_t)"; cout << bstrt << endl; // Convert to a CComBSTR CComBSTR ccombstr(orig); if (ccombstr.Append(L" (CComBSTR)") == S_OK) { CW2A printstr(ccombstr); cout << printstr << endl; } // Convert to a CString CString cstring(orig); cstring += " (CString)"; cout << cstring << endl; // Convert to a basic_string string basicstring(orig); basicstring += " (basic_string)"; cout << basicstring << endl; // Convert to a System::String String ^systemstring = gcnew String(orig); systemstring += " (System::String)"; Console::WriteLine("{0}", systemstring); delete systemstring; }</pre> </div> </div> <h3 class="subHeading">杈撳嚭</h3> <div id="hvzpftn" class="subSection"> <pre>Hello, World! (char *) Hello, World! (wchar_t *) Hello, World! (_bstr_t) Hello, World! (CComBSTR) Hello, World! (CString) Hello, World! (basic_string) Hello, World! (System::String)</pre> </div> </div> <h1 class="heading">浠?wchar_t * 杞崲</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection2"> </div> <h1 class="heading">紺轟緥</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection3"> <h3 class="subHeading">璇存槑</h3> <div id="hvzpftn" class="subSection"> <p>姝ょず渚嬫紨紺哄浣曚粠 <strong>wchar_t *</strong> 杞崲涓轟笂闈㈠垪鍑虹殑鍏朵粬瀛楃涓茬被鍨嬨?/p> </div> <div id="hvzpftn" class="subSection"> <div id="hvzpftn" class="code" id="ctl00_LibFrame_ctl09_other"> <div id="hvzpftn" class="CodeSnippetTitleBar"> <div id="hvzpftn" class="CodeDisplayLanguage"> </div> </div> <pre class="code" id="ctl00_LibFrame_ctl09other" space="preserve">// convert_from_wchar_t.cpp // compile with /clr /link comsuppw.lib #include <iostream> #include <stdlib.h> #include <string> #include "atlbase.h" #include "atlstr.h" #include "comutil.h" using namespace std; using namespace System; int main() { wchar_t *orig = L"Hello, World!"; wcout << orig << L" (wchar_t *)" << endl; // Convert to a char* size_t origsize = wcslen(orig) + 1; const size_t newsize = 100; size_t convertedChars = 0; char nstring[newsize]; wcstombs_s(&convertedChars, nstring, origsize, orig, _TRUNCATE); strcat_s(nstring, " (char *)"); cout << nstring << endl; // Convert to a _bstr_t _bstr_t bstrt(orig); bstrt += " (_bstr_t)"; cout << bstrt << endl; // Convert to a CComBSTR CComBSTR ccombstr(orig); if (ccombstr.Append(L" (CComBSTR)") == S_OK) { CW2A printstr(ccombstr); cout << printstr << endl; } // Convert to a CString CString cstring(orig); cstring += " (CString)"; cout << cstring << endl; // Convert to a basic_string wstring basicstring(orig); basicstring += L" (basic_string)"; wcout << basicstring << endl; // Convert to a System::String String ^systemstring = gcnew String(orig); systemstring += " (System::String)"; Console::WriteLine("{0}", systemstring); delete systemstring; }</pre> </div> </div> <h3 class="subHeading">杈撳嚭</h3> <div id="hvzpftn" class="subSection"> <pre>Hello, World! (wchar_t *) Hello, World! (char *) Hello, World! (_bstr_t) Hello, World! (CComBSTR) Hello, World! (CString) Hello, World! (basic_string) Hello, World! (System::String)</pre> </div> </div> <h1 class="heading">浠?_bstr_t 杞崲</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection4"> </div> <h1 class="heading">紺轟緥</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection5"> <h3 class="subHeading">璇存槑</h3> <div id="hvzpftn" class="subSection"> <p>姝ょず渚嬫紨紺哄浣曚粠 <strong>_bstr_t</strong> 杞崲涓轟笂闈㈠垪鍑虹殑鍏朵粬瀛楃涓茬被鍨嬨?/p> </div> <div id="hvzpftn" class="subSection"> <div id="hvzpftn" class="code" id="ctl00_LibFrame_ctl10_other"> <div id="hvzpftn" class="CodeSnippetTitleBar"> <div id="hvzpftn" class="CodeDisplayLanguage"> </div> </div> <pre class="code" id="ctl00_LibFrame_ctl10other" space="preserve">// convert_from_bstr_t.cpp // compile with /clr /link comsuppw.lib #include <iostream> #include <stdlib.h> #include <string> #include "atlbase.h" #include "atlstr.h" #include "comutil.h" using namespace std; using namespace System; int main() { _bstr_t orig("Hello, World!"); wcout << orig << " (_bstr_t)" << endl; // Convert to a char* const size_t newsize = 100; char nstring[newsize]; strcpy_s(nstring, (char *)orig); strcat_s(nstring, " (char *)"); cout << nstring << endl; // Convert to a wchar_t* wchar_t wcstring[newsize]; wcscpy_s(wcstring, (wchar_t *)orig); wcscat_s(wcstring, L" (wchar_t *)"); wcout << wcstring << endl; // Convert to a CComBSTR CComBSTR ccombstr((char *)orig); if (ccombstr.Append(L" (CComBSTR)") == S_OK) { CW2A printstr(ccombstr); cout << printstr << endl; } // Convert to a CString CString cstring((char *)orig); cstring += " (CString)"; cout << cstring << endl; // Convert to a basic_string string basicstring((char *)orig); basicstring += " (basic_string)"; cout << basicstring << endl; // Convert to a System::String String ^systemstring = gcnew String((char *)orig); systemstring += " (System::String)"; Console::WriteLine("{0}", systemstring); delete systemstring; }</pre> </div> </div> <h3 class="subHeading">杈撳嚭</h3> <div id="hvzpftn" class="subSection"> <pre>Hello, World! (_bstr_t) Hello, World! (char *) Hello, World! (wchar_t *) Hello, World! (CComBSTR) Hello, World! (CString) Hello, World! (basic_string) Hello, World! (System::String)</pre> </div> </div> <h1 class="heading">浠?CComBSTR 杞崲</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection6"> </div> <h1 class="heading">紺轟緥</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection7"> <h3 class="subHeading">璇存槑</h3> <div id="hvzpftn" class="subSection"> <p>姝ょず渚嬫紨紺哄浣曚粠 <strong>CComBSTR</strong> 杞崲涓轟笂闈㈠垪鍑虹殑鍏朵粬瀛楃涓茬被鍨嬨?/p> </div> <div id="hvzpftn" class="subSection"> <div id="hvzpftn" class="code" id="ctl00_LibFrame_ctl11_other"> <div id="hvzpftn" class="CodeSnippetTitleBar"> <div id="hvzpftn" class="CodeDisplayLanguage"> </div> </div> <pre class="code" id="ctl00_LibFrame_ctl11other" space="preserve">// convert_from_ccombstr.cpp // compile with /clr /link comsuppw.lib #include <iostream> #include <stdlib.h> #include <string> #include "atlbase.h" #include "atlstr.h" #include "comutil.h" #include "vcclr.h" using namespace std; using namespace System; using namespace System::Runtime::InteropServices; int main() { CComBSTR orig("Hello, World!"); CW2A printstr(orig); cout << printstr << " (CComBSTR)" << endl; // Convert to a char* const size_t newsize = 100; char nstring[newsize]; CW2A tmpstr1(orig); strcpy_s(nstring, tmpstr1); strcat_s(nstring, " (char *)"); cout << nstring << endl; // Convert to a wchar_t* wchar_t wcstring[newsize]; wcscpy_s(wcstring, orig); wcscat_s(wcstring, L" (wchar_t *)"); wcout << wcstring << endl; // Convert to a _bstr_t _bstr_t bstrt(orig); bstrt += " (_bstr_t)"; cout << bstrt << endl; // Convert to a CString CString cstring(orig); cstring += " (CString)"; cout << cstring << endl; // Convert to a basic_string wstring basicstring(orig); basicstring += L" (basic_string)"; wcout << basicstring << endl; // Convert to a System::String String ^systemstring = gcnew String(orig); systemstring += " (System::String)"; Console::WriteLine("{0}", systemstring); delete systemstring; }</pre> </div> </div> <h3 class="subHeading">杈撳嚭</h3> <div id="hvzpftn" class="subSection"> <pre>Hello, World! (CComBSTR) Hello, World! (char *) Hello, World! (wchar_t *) Hello, World! (_bstr_t) Hello, World! (CString) Hello, World! (basic_string) Hello, World! (System::String)</pre> </div> </div> <h1 class="heading">浠?CString 杞崲</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection8"> </div> <h1 class="heading">紺轟緥</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection9"> <h3 class="subHeading">璇存槑</h3> <div id="hvzpftn" class="subSection"> <p>姝ょず渚嬫紨紺哄浣曚粠 <strong>CString</strong> 杞崲涓轟笂闈㈠垪鍑虹殑鍏朵粬瀛楃涓茬被鍨嬨?/p> </div> <div id="hvzpftn" class="subSection"> <div id="hvzpftn" class="code" id="ctl00_LibFrame_ctl12_other"> <div id="hvzpftn" class="CodeSnippetTitleBar"> <div id="hvzpftn" class="CodeDisplayLanguage"> </div> </div> <pre class="code" id="ctl00_LibFrame_ctl12other" space="preserve">// convert_from_cstring.cpp // compile with /clr /link comsuppw.lib #include <iostream> #include <stdlib.h> #include <string> #include "atlbase.h" #include "atlstr.h" #include "comutil.h" using namespace std; using namespace System; int main() { CString orig("Hello, World!"); wcout << orig << " (CString)" << endl; // Convert to a char* const size_t newsize = 100; char nstring[newsize]; strcpy_s(nstring, orig); strcat_s(nstring, " (char *)"); cout << nstring << endl; // Convert to a wchar_t* // You must first convert to a char * for this to work. size_t origsize = strlen(orig) + 1; size_t convertedChars = 0; wchar_t wcstring[newsize]; mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE); wcscat_s(wcstring, L" (wchar_t *)"); wcout << wcstring << endl; // Convert to a _bstr_t _bstr_t bstrt(orig); bstrt += " (_bstr_t)"; cout << bstrt << endl; // Convert to a CComBSTR CComBSTR ccombstr(orig); if (ccombstr.Append(L" (CComBSTR)") == S_OK) { CW2A printstr(ccombstr); cout << printstr << endl; } // Convert to a basic_string string basicstring(orig); basicstring += " (basic_string)"; cout << basicstring << endl; // Convert to a System::String String ^systemstring = gcnew String(orig); systemstring += " (System::String)"; Console::WriteLine("{0}", systemstring); delete systemstring; }</pre> </div> </div> <h3 class="subHeading">杈撳嚭</h3> <div id="hvzpftn" class="subSection"> <pre>Hello, World! (CString) Hello, World! (char *) Hello, World! (wchar_t *) Hello, World! (_bstr_t) Hello, World! (CComBSTR) Hello, World! (basic_string) Hello, World! (System::String)</pre> </div> </div> <h1 class="heading">浠?basic_string 杞崲</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection10"> </div> <h1 class="heading">紺轟緥</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection11"> <h3 class="subHeading">璇存槑</h3> <div id="hvzpftn" class="subSection"> <p>姝ょず渚嬫紨紺哄浣曚粠 <strong>basic_string</strong> 杞崲涓轟笂闈㈠垪鍑虹殑鍏朵粬瀛楃涓茬被鍨嬨?/p> </div> <div id="hvzpftn" class="subSection"> <div id="hvzpftn" class="code" id="ctl00_LibFrame_ctl13_other"> <div id="hvzpftn" class="CodeSnippetTitleBar"> <div id="hvzpftn" class="CodeDisplayLanguage"> </div> </div> <pre class="code" id="ctl00_LibFrame_ctl13other" space="preserve">// convert_from_basic_string.cpp // compile with /clr /link comsuppw.lib #include <iostream> #include <stdlib.h> #include <string> #include "atlbase.h" #include "atlstr.h" #include "comutil.h" using namespace std; using namespace System; int main() { string orig("Hello, World!"); cout << orig << " (basic_string)" << endl; // Convert to a char* const size_t newsize = 100; char nstring[newsize]; strcpy_s(nstring, orig.c_str()); strcat_s(nstring, " (char *)"); cout << nstring << endl; // Convert to a wchar_t* // You must first convert to a char * for this to work. size_t origsize = strlen(orig.c_str()) + 1; size_t convertedChars = 0; wchar_t wcstring[newsize]; mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE); wcscat_s(wcstring, L" (wchar_t *)"); wcout << wcstring << endl; // Convert to a _bstr_t _bstr_t bstrt(orig.c_str()); bstrt += " (_bstr_t)"; cout << bstrt << endl; // Convert to a CComBSTR CComBSTR ccombstr(orig.c_str()); if (ccombstr.Append(L" (CComBSTR)") == S_OK) { CW2A printstr(ccombstr); cout << printstr << endl; } // Convert to a CString CString cstring(orig.c_str()); cstring += " (CString)"; cout << cstring << endl; // Convert to a System::String String ^systemstring = gcnew String(orig.c_str()); systemstring += " (System::String)"; Console::WriteLine("{0}", systemstring); delete systemstring; }</pre> </div> </div> <h3 class="subHeading">杈撳嚭</h3> <div id="hvzpftn" class="subSection"> <pre>Hello, World! (basic_string) Hello, World! (char *) Hello, World! (wchar_t *) Hello, World! (_bstr_t) Hello, World! (CComBSTR) Hello, World! (CString) Hello, World! (System::String)</pre> </div> </div> <h1 class="heading">浠?System::String 杞崲</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection12"> </div> <h1 class="heading">紺轟緥</h1> <div id="hvzpftn" class="seeAlsoNoToggleSection" id="sectionSection13"> <h3 class="subHeading">璇存槑</h3> <div id="hvzpftn" class="subSection"> <p>姝ょず渚嬫紨紺哄浣曚粠 <strong>System.String</strong> 杞崲涓轟笂闈㈠垪鍑虹殑鍏朵粬瀛楃涓茬被鍨嬨?/p> </div> <div id="hvzpftn" class="subSection"> <div id="hvzpftn" class="code" id="ctl00_LibFrame_ctl14_other"> <div id="hvzpftn" class="CodeSnippetTitleBar"> <div id="hvzpftn" class="CodeDisplayLanguage"> </div> </div> <pre class="code" id="ctl00_LibFrame_ctl14other" space="preserve">// convert_from_system_string.cpp // compile with /clr /link comsuppw.lib #include <iostream> #include <stdlib.h> #include <string> #include "atlbase.h" #include "atlstr.h" #include "comutil.h" #include "vcclr.h" using namespace std; using namespace System; using namespace System::Runtime::InteropServices; int main() { String ^orig = gcnew String("Hello, World!"); Console::WriteLine("{0} (System::String)", orig); pin_ptr<const wchar_t> wch = PtrToStringChars(orig); // Convert to a char* size_t origsize = wcslen(wch) + 1; const size_t newsize = 100; size_t convertedChars = 0; char nstring[newsize]; wcstombs_s(&convertedChars, nstring, origsize, wch, _TRUNCATE); strcat_s(nstring, " (char *)"); cout << nstring << endl; // Convert to a wchar_t* wchar_t wcstring[newsize]; wcscpy_s(wcstring, wch); wcscat_s(wcstring, L" (wchar_t *)"); wcout << wcstring << endl; // Convert to a _bstr_t _bstr_t bstrt(wch); bstrt += " (_bstr_t)"; cout << bstrt << endl; // Convert to a CComBSTR CComBSTR ccombstr(wch); if (ccombstr.Append(L" (CComBSTR)") == S_OK) { CW2A printstr(ccombstr); cout << printstr << endl; } // Convert to a CString CString cstring(wch); cstring += " (CString)"; cout << cstring << endl; // Convert to a basic_string wstring basicstring(wch); basicstring += L" (basic_string)"; wcout << basicstring << endl; delete orig; }</pre> </div> </div> <h3 class="subHeading">杈撳嚭</h3> <div id="hvzpftn" class="subSection"> <pre>Hello, World! (System::String) Hello, World! (char *) Hello, World! (wchar_t *) Hello, World! (_bstr_t) Hello, World! (CComBSTR) Hello, World! (CString) Hello, World! (basic_string)</pre> </div> </div> </li> </ul> </div> </div> <img src ="http://www.shnenglu.com/yuanyajie/aggbug/16429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/yuanyajie/" target="_blank">娓呮簮娓告皯</a> 2006-12-14 14:22 <a href="http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16429.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>CString鍜宻tring鐨勪簰鐩歌漿鎹?/title><link>http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16427.html</link><dc:creator>娓呮簮娓告皯</dc:creator><author>娓呮簮娓告皯</author><pubDate>Thu, 14 Dec 2006 06:11:00 GMT</pubDate><guid>http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16427.html</guid><wfw:comment>http://www.shnenglu.com/yuanyajie/comments/16427.html</wfw:comment><comments>http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16427.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/yuanyajie/comments/commentRss/16427.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/yuanyajie/services/trackbacks/16427.html</trackback:ping><description><![CDATA[ <h4 class="TextColor1" id="subjcns!944d768f73c602d6!193" style="MARGIN-BOTTOM: 0px">聽</h4> <div class="hvzpftn" id="msgcns!944d768f73c602d6!193"> <div>CString->std::string 渚嬪瓙錛?br /><br />CString strMfc=鈥渢est鈥?<br /><br />std::string strStl;<br /><br />strStl=strMfc.GetBuffer(0);<br /><br />std::string->CString聽聽渚嬪瓙錛?br /><br />CString strMfc錛?br /><br />std::string strStl=鈥渢est鈥?<br /><br />strMfc=strStl.c_str(); </div> </div> <img src ="http://www.shnenglu.com/yuanyajie/aggbug/16427.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/yuanyajie/" target="_blank">娓呮簮娓告皯</a> 2006-12-14 14:11 <a href="http://www.shnenglu.com/yuanyajie/archive/2006/12/14/16427.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://www.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://xb735.com" target="_blank">性久久久久久久久</a>| <a href="http://739822.com" target="_blank">久久狠狠久久综合桃花</a>| <a href="http://wwwmy77757.com" target="_blank">欧美激情一区二区三区高清视频</a>| <a href="http://jjoo4.com" target="_blank">久久精品国产免费</a>| <a href="http://v58q.com" target="_blank">亚洲第一精品在线</a>| <a href="http://xtsjjw.com" target="_blank">欧美日韩一区二区三区免费</a>| <a href="http://hcbr365.com" target="_blank">欧美亚洲系列</a>| <a href="http://4123123.com" target="_blank">亚洲国产高清自拍</a>| <a href="http://hjk56.com" target="_blank">欧美国产精品va在线观看</a>| <a href="http://khc83.com" target="_blank">在线欧美一区</a>| <a href="http://域名" target="_blank">亚洲风情在线资源站</a>| <a href="http://actinview.com" target="_blank">久久国产精品电影</a>| <a href="http://www7495.com" target="_blank">亚洲级视频在线观看免费1级</a>| <a href="http://taoh228.com" target="_blank">91久久精品国产</a>| <a href="http://my17677.com" target="_blank">狠狠色丁香久久婷婷综合_中</a>| <a href="http://770456.com" target="_blank">国产视频精品免费播放</a>| <a href="http://y9z8.com" target="_blank">久久亚洲综合色</a>| <a href="http://whmingtong.com" target="_blank">欧美黄免费看</a>| <a href="http://58yewu.com" target="_blank">亚洲欧美变态国产另类</a>| <a href="http://4008305555.com" target="_blank">欧美在线免费观看视频</a>| <a href="http://www8xvi.com" target="_blank">亚洲另类黄色</a>| <a href="http://sdgs6788.com" target="_blank">亚洲欧美一区二区精品久久久</a>| <a href="http://phdy999.com" target="_blank">激情一区二区</a>| <a href="http://kakatok.com" target="_blank">亚洲精品在线观看免费</a>| <a href="http://wzlingfeng.com" target="_blank">国产在线不卡视频</a>| <a href="http://1116333.com" target="_blank">亚洲看片网站</a>| <a href="http://ztqsfw.com" target="_blank">一区视频在线看</a>| <a href="http://lysyfls.com" target="_blank">夜夜嗨一区二区</a>| <a href="http://039658.com" target="_blank">在线高清一区</a>| <a href="http://ccc36-com.com" target="_blank">亚洲视频在线二区</a>| <a href="http://bocai4488.com" target="_blank">91久久夜色精品国产九色</a>| <a href="http://avtb2120.com" target="_blank">亚洲性感美女99在线</a>| <a href="http://cc1024.com" target="_blank">亚洲精品久久</a>| <a href="http://www-yh6.com" target="_blank">欧美一区综合</a>| <a href="http://www524141.com" target="_blank">亚洲午夜激情网页</a>| <a href="http://344230.com" target="_blank">免费日本视频一区</a>| <a href="http://894322.com" target="_blank">久久精品国产99精品国产亚洲性色</a>| <a href="http://x2b2.com" target="_blank">欧美激情精品</a>| <a href="http://csmdjs.com" target="_blank">欧美成人精品h版在线观看</a>| <a href="http://epiegame.com" target="_blank">欧美三日本三级三级在线播放</a>| <a href="http://phitris.com" target="_blank">美女黄色成人网</a>| <a href="http://5xxm.com" target="_blank">国产精品一区免费观看</a>| <a href="http://47b8.com" target="_blank">日韩一级黄色av</a>| <a href="http://44779c.com" target="_blank">在线播放中文一区</a>| <a href="http://weixiao668.com" target="_blank">亚洲欧美一区二区三区久久</a>| <a href="http://japanjavbibi.com" target="_blank">一本色道久久综合</a>| <a href="http://118626cc.com" target="_blank">美女网站久久</a>| <a href="http://wltaste.com" target="_blank">久久一区二区精品</a>| <a href="http://17cao8.com" target="_blank">国产偷国产偷亚洲高清97cao</a>| <a href="http://xiaobi13.com" target="_blank">亚洲麻豆一区</a>| <a href="http://016889.com" target="_blank">日韩一区二区精品</a>| <a href="http://ydpszcn.com" target="_blank">欧美国产日韩一区</a>| <a href="http://y4088.com" target="_blank">欧美电影免费</a>| <a href="http://xaipad.com" target="_blank">亚洲第一黄色</a>| <a href="http://thisisfil.com" target="_blank">久久国产精彩视频</a>| <a href="http://6666345.com" target="_blank">久久免费视频这里只有精品</a>| <a href="http://402626com.com" target="_blank">国产毛片一区二区</a>| <a href="http://18loutv.com" target="_blank">亚洲一区二区三区免费观看</a>| <a href="http://www369cf.com" target="_blank">亚洲私人影院</a>| <a href="http://1188188.com" target="_blank">欧美日韩精品免费观看视一区二区</a>| <a href="http://www-888690.com" target="_blank">蜜桃久久av</a>| <a href="http://ccnn33.com" target="_blank">欧美日韩成人一区二区三区</a>| <a href="http://wzsl8.com" target="_blank">免费久久精品视频</a>| <a href="http://66889h.com" target="_blank">狠狠88综合久久久久综合网</a>| <a href="http://y65y.com" target="_blank">香蕉久久国产</a>| <a href="http://emu160.com" target="_blank">久久久青草青青国产亚洲免观</a>| <a href="http://tareandshare.com" target="_blank">国产精品私人影院</a>| <a href="http://488089.com" target="_blank">亚洲一区成人</a>| <a href="http://yxtczx.com" target="_blank">久久av一区二区三区漫画</a>| <a href="http://wwwwy9001.com" target="_blank">国产精品推荐精品</a>| <a href="http://wg135.com" target="_blank">欧美在线日韩精品</a>| <a href="http://xb989.com" target="_blank">久久婷婷av</a>| <a href="http://wxsanyuan.com" target="_blank">在线日韩欧美</a>| <a href="http://neudlac.com" target="_blank">欧美大片91</a>| <a href="http://www-18873.com" target="_blank">9国产精品视频</a>| <a href="http://winkwink333.com" target="_blank">一区二区三区偷拍</a>| <a href="http://sxhrsmjj.com" target="_blank">国产精品久久久久久亚洲毛片</a>| <a href="http://778kb.com" target="_blank">亚洲午夜精品国产</a>| <a href="http://www8888803.com" target="_blank">欧美亚洲免费</a>| <a href="http://8x1080x.com" target="_blank">国产一区二区三区黄</a>| <a href="http://199372.com" target="_blank">久久久久久久久综合</a>| <a href="http://www668889.com" target="_blank">亚洲高清视频中文字幕</a>| <a href="http://cnbluebox.com" target="_blank">一区二区三区 在线观看视</a>| <a href="http://yh-hy.com" target="_blank">欧美性淫爽ww久久久久无</a>| <a href="http://478884.com" target="_blank">亚洲女同在线</a>| <a href="http://baluka-tw.com" target="_blank">欧美不卡在线视频</a>| <a href="http://aaddgg66.com" target="_blank">99re66热这里只有精品3直播 </a>| <a href="http://luluse882.com" target="_blank">午夜精品成人在线</a>| <a href="http://y87b.com" target="_blank">国产欧美日韩91</a>| <a href="http://223533.com" target="_blank">老司机免费视频久久</a>| <a href="http://xxmh686.com" target="_blank">亚洲欧洲一区二区三区久久</a>| <a href="http://bjlaosha.com" target="_blank">亚洲专区一区二区三区</a>| <a href="http://haose23.com" target="_blank">狠狠爱综合网</a>| <a href="http://789583.com" target="_blank">欧美精品aa</a>| <a href="http://www520590.com" target="_blank">在线激情影院一区</a>| <a href="http://cgnwp.com" target="_blank">欧美日韩ab</a>| <a href="http://shiselol.com" target="_blank">欧美亚洲免费</a>| <a href="http://sihu1515hh.com" target="_blank">亚洲国产精品欧美一二99</a>| <a href="http://fdgkinetic.com" target="_blank">亚洲天堂成人在线观看</a>| <a href="http://www520590.com" target="_blank">国产一区二区三区在线观看网站</a>| <a href="http://jjy891.com" target="_blank">久久综合久久综合久久综合</a>| <a href="http://668334.com" target="_blank">中文亚洲欧美</a>| <a href="http://www-ss777.com" target="_blank">欧美大片免费观看在线观看网站推荐</a>| <a href="http://www-06654.com" target="_blank">亚洲深夜激情</a>| <a href="http://idc0558.com" target="_blank">影音先锋中文字幕一区</a>| <a href="http://tefahsop.com" target="_blank">欧美日韩亚洲国产一区</a>| <a href="http://99999zc.com" target="_blank">欧美专区在线播放</a>| <a href="http://wwwmy77757.com" target="_blank">亚洲美女诱惑</a>| <a href="http://dzyhjx.com" target="_blank">欧美刺激性大交免费视频 </a>| <a href="http://kuaikan97.com" target="_blank">亚洲国产精品小视频</a>| <a href="http://tubcup.com" target="_blank">欧美午夜女人视频在线</a>| <a href="http://xiaobi13.com" target="_blank">老鸭窝毛片一区二区三区</a>| <a href="http://998609.com" target="_blank">在线亚洲一区二区</a>| <a href="http://372469.com" target="_blank">亚洲黄色免费网站</a>| <a href="http://www-kj777.com" target="_blank">久久久999精品</a>| <a href="http://xingda-sh.com" target="_blank">亚洲特级片在线</a>| <a href="http://0808333.com" target="_blank">亚洲国产精品成人</a>| <a href="http://8bc3.com" target="_blank">国产一区二区三区直播精品电影</a>| <a href="http://4449998.com" target="_blank">欧美黄色一级视频</a>| <a href="http://xdlot.com" target="_blank">玖玖视频精品</a>| <a href="http://tk99444.com" target="_blank">欧美在线精品一区</a>| <a href="http://7mxing.com" target="_blank">亚洲女同在线</a>| <a href="http://timonna.com" target="_blank">亚洲一二三区精品</a>| <a href="http://ss2ssc.com" target="_blank">亚洲日本免费</a>| <a href="http://8013sf.com" target="_blank">亚洲成人中文</a>| <a href="http://57sa.com" target="_blank">欧美国产另类</a>| <a href="http://www18889.com" target="_blank">老鸭窝毛片一区二区三区</a>| <a href="http://6hzl8.com" target="_blank">西西裸体人体做爰大胆久久久</a>| <a href="http://5xxm.com" target="_blank">亚洲高清视频在线</a>| <a href="http://497n.com" target="_blank">欧美大色视频</a>| <a href="http://609005.com" target="_blank">欧美一区二粉嫩精品国产一线天</a>| <a href="http://22241com.com" target="_blank">99re视频这里只有精品</a>| <a href="http://www474000c.com" target="_blank">欧美激情一区二区三区蜜桃视频 </a>| <a href="http://wwwlywbb.com" target="_blank">夜夜爽www精品</a>| <a href="http://maokk77.com" target="_blank">亚洲高清视频的网址</a>| <a href="http://2629929.com" target="_blank">一区二区在线免费观看</a>| <a href="http://gbandal.com" target="_blank">国语自产偷拍精品视频偷 </a>| <a href="http://www227ee.com" target="_blank">欧美激情一级片一区二区</a>| <a href="http://wilcherish.com" target="_blank">久久伊人亚洲</a>| <a href="http://cibocentre.com" target="_blank">久久久精品久久久久</a>| <a href="http://lalandapps.com" target="_blank">亚洲欧美日韩另类</a>| <a href="http://123lifenet.com" target="_blank">午夜影视日本亚洲欧洲精品</a>| <a href="http://820002.com" target="_blank">亚洲午夜免费视频</a>| <a href="http://yytaotu.com" target="_blank">亚洲一区影音先锋</a>| <a href="http://626tw.com" target="_blank">亚洲在线免费视频</a>| <a href="http://402626com.com" target="_blank">亚洲影音一区</a>| <a href="http://yiapk.com" target="_blank">香蕉久久国产</a>| <a href="http://1235656.com" target="_blank">久久久av毛片精品</a>| <a href="http://40346c.com" target="_blank">蜜臀久久99精品久久久久久9 </a>| <a href="http://www-11688.com" target="_blank">夜夜夜久久久</a>| <a href="http://6k6a.com" target="_blank">一区二区三区四区五区精品视频</a>| <a href="http://17ccem.com" target="_blank">亚洲免费av片</a>| <a href="http://8x588.com" target="_blank">在线亚洲电影</a>| <a href="http://236664.com" target="_blank">午夜精品福利一区二区蜜股av</a>| <a href="http://444yd.com" target="_blank">欧美一区二区高清</a>| <a href="http://www24822.com" target="_blank">久久精品视频免费</a>| <a href="http://shruhan.com" target="_blank">久久免费高清</a>| <a href="http://1397979.com" target="_blank">欧美国产日韩一区二区三区</a>| <a href="http://ww3838.com" target="_blank">欧美日韩亚洲一区二区三区</a>| <a href="http://china391.com" target="_blank">国产精品v欧美精品∨日韩</a>| <a href="http://6055365.com" target="_blank">欧美性开放视频</a>| <a href="http://7555hh.com" target="_blank">国产婷婷一区二区</a>| <a href="http://xhamster0.com" target="_blank">亚洲第一福利视频</a>| <a href="http://72966t.com" target="_blank">在线一区观看</a>| <a href="http://236fff.com" target="_blank">久久久久久**毛片大全</a>| <a href="http://scqike.com" target="_blank">欧美福利视频网站</a>| <a href="http://hicao32.com" target="_blank">夜夜爽夜夜爽精品视频</a>| <a href="http://naturalgiftfashion.com" target="_blank">午夜精品久久久久久久99热浪潮 </a>| <a href="http://qvod777.com" target="_blank">欧美制服第一页</a>| <a href="http://lianjiemenye.com" target="_blank">免费永久网站黄欧美</a>| <a href="http://555yye.com" target="_blank">欧美日本三级</a>| <a href="http://66hhmm.com" target="_blank">国产亚洲视频在线</a>| <a href="http://hakuihoso.com" target="_blank">亚洲经典一区</a>| <a href="http://bodabloc.com" target="_blank">欧美一区日本一区韩国一区</a>| <a href="http://sishengnv.com" target="_blank">另类av一区二区</a>| <a href="http://395493.com" target="_blank">亚洲精品久久久久久下一站</a>| <a href="http://6168138.com" target="_blank">午夜日韩在线</a>| <a href="http://pgpg520.com" target="_blank">欧美乱大交xxxxx</a>| <a href="http://978769.com" target="_blank">国产日产欧产精品推荐色 </a>| <a href="http://133686.com" target="_blank">久久久国际精品</a>| <a href="http://91nbs.com" target="_blank">欧美激情一区二区三区全黄</a>| <a href="http://173881.com" target="_blank">亚洲午夜三级在线</a>| <a href="http://k-dchina.com" target="_blank">免费在线国产精品</a>| <a href="http://87ssyy.com" target="_blank">国产偷久久久精品专区</a>| <a href="http://gztcm01.com" target="_blank">一本大道久久a久久综合婷婷 </a>| <a href="http://zgztby.com" target="_blank">亚洲自拍啪啪</a>| <a href="http://woniuminsu.com" target="_blank">免费在线成人av</a>| <a href="http://ssss96.com" target="_blank">亚洲性图久久</a>| <a href="http://9882355.com" target="_blank">欧美国产日韩亚洲一区</a>| <a href="http://ckk755.com" target="_blank">国内精品久久久久国产盗摄免费观看完整版 </a>| <a href="http://7a6a.com" target="_blank">欧美激情成人在线视频</a>| <a href="http://rbet6365.com" target="_blank">欧美精品久久天天躁</a>| <a href="http://www218999.com" target="_blank">欧美国产精品劲爆</a>| <a href="http://www1122fu.com" target="_blank">亚洲综合国产激情另类一区</a>| <a href="http://xxx444vip.com" target="_blank">久久综合国产精品台湾中文娱乐网</a>| <a href="http://dzyhjx.com" target="_blank">欧美性猛交xxxx乱大交退制版</a>| <a href="http://3dxxoo.com" target="_blank">国模一区二区三区</a>| <a href="http://580388.com" target="_blank">午夜激情亚洲</a>| <a href="http://belerbb.com" target="_blank">日韩视频三区</a>| <a href="http://www39pao.com" 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>