锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久亚洲精品男人的天堂,久久精品国产亚洲av麻豆色欲,久久夜色精品国产噜噜噜亚洲AV http://www.shnenglu.com/wlwlxj/category/1324.html<div>涓涓悆杞キ鐨勭敺浜?!!!!鎴戝彧鎯沖啓紼嬪簭####<br>甯堝し涔嬫妧浠ュ埗澶? 鍚懼皾緇堟棩鑰屾濈煟,涓嶅欏昏嚲涔嬫墍瀛︿篃<br>鍠濈瀛熷﹩姹?韙忚繃濂堜綍妗?娑呮</div>
I've been programming since I was 21. Started with C++, looked at Java, keen on Visual Basic and Visual C++, thinking about .NET and C#.^_^,very ridiculous. zh-cn Tue, 20 May 2008 09:27:26 GMT Tue, 20 May 2008 09:27:26 GMT 60 鍔ㄦ佸鎬佷笌闈欐佸鎬?/title> http://www.shnenglu.com/wlwlxj/archive/2006/09/25/12936.html涓囪繛鏂?/dc:creator>涓囪繛鏂?/author>Mon, 25 Sep 2006 02:38:00 GMT http://www.shnenglu.com/wlwlxj/archive/2006/09/25/12936.html http://www.shnenglu.com/wlwlxj/comments/12936.html http://www.shnenglu.com/wlwlxj/archive/2006/09/25/12936.html#Feedback 2 http://www.shnenglu.com/wlwlxj/comments/commentRss/12936.html http://www.shnenglu.com/wlwlxj/services/trackbacks/12936.html 鍔ㄦ佸鎬佺湅涓婂幓寰堣嚜鐒舵竻鏅幫紝闄ゆ涔嬪鎬曟槸娌℃湁鍒殑濂藉銆傝繖涔熸槸涓轟粈涔坰tl銆乥oost涓轟竴緹よ娉曢珮鎵嬫墍浜茬湳鐨勫師鍥犮傝瀹炶瘽緇忓父涓鐪嬪埌妯$増閮芥墦鍐鋒垬錛岃鏄ā鐗堝弬鏁頒竴澶氾紝鐞嗘竻涔嬮棿鍏崇郴灝卞緱鍖栧緢澶氭椂闂淬備笉榪囨煇浜涘湴鏂癸紝浣跨敤妯$増鏉ュ疄鐜頒竴浜涘簳灞傚姛鑳借兘杈懼埌鎰忔兂涓嶅埌鐨勬晥鏋溿?br />闈欐佸鎬佺殑濂藉錛?br />1銆佸彲浠ュ鎬佹垚鍛樺彉閲?鑷垱鐨勮娉曞摝^_^) 2銆侀伩鍏嶈櫄鎸囬拡鐨勫唴瀛樻崯鑰椾互鍙婅櫄鍑芥暟璋冪敤榪愯鏁堢巼鎹熻?br />緙虹偣錛?br />1銆佸洜涓虹紪璇戞椂浼氬姞鍏ョ被鍨嬬殑紜畾錛屼唬鐮佸昂瀵鎬細紼嶇◢澶т竴鐐?br />2銆佹棤娉曞澶氭佸璞$粺涓澶勭悊錛屽鎬佹х◢鏈夋姌鎵?br /> MFC綾誨緢灝戜嬌鐢ㄦā鐗堬紝鑰學TL綾誨ぇ閲忎嬌鐢ㄦā鐗堛傛垜鍦ㄧ湅WTL浠g爜鐨勬椂鍊欙紝緇忓父琚噷闈㈢殑瀹炵幇鎵榪鋒儜錛屽洜涓洪噷闈㈡湁寰堝璁捐閲囩敤鍔ㄦ佸鎬佸拰闈欐佸鎬佺粨鍚堜嬌鐢紝榪欏彲鑳芥槸涓縐嶄笉閿欑殑緇撳悎銆備笅闈㈡垜鐢ㄤ竴孌典唬鐮佹紨紺鴻繖浜涚壒鐐癸紝鐪嬩笂鍘誨緢騫沖父錛?br />// 聽Virtual聽&&聽inherit class 聽Category1 { public : 聽聽聽聽 virtual 聽 void 聽SayCatName()聽 = 聽 0 ; } ; class 聽Car1聽:聽 public 聽Category1 { private : 聽聽聽聽 static 聽 string 聽聽聽聽m_strName; public : 聽聽聽聽 virtual 聽 void 聽SayCatName() 聽聽聽聽 { 聽聽聽聽聽聽聽聽cout聽 << 聽m_strName聽 << 聽endl; 聽聽聽聽} }; string 聽Car1::m_strName聽 = 聽 " Car1 " ; class 聽House1聽:聽 public 聽Category1 { private : 聽聽聽聽 static 聽 string 聽聽聽聽m_strName; public : 聽聽聽聽 virtual 聽 void 聽SayCatName() 聽聽聽聽 { 聽聽聽聽聽聽聽聽cout聽 << 聽m_strName聽 << 聽endl; 聽聽聽聽} }; string 聽House1::m_strName聽 = 聽 " Hourse1 " ; // 聽!(Virtual聽&&聽inherit) // 聽Template template < typename聽T > class 聽Category2 { protected : 聽聽聽聽 static 聽 string 聽m_strName; public : 聽聽聽聽 virtual 聽 void 聽SayCatName() 聽聽聽聽 { 聽聽聽聽聽聽聽聽T * 聽聽聽聽pT聽聽聽聽 = 聽static_cast < T *> ( this ); 聽聽聽聽聽聽聽聽pT -> SayCatName(); 聽聽聽聽} }; class 聽Car2聽:聽 public 聽Category2 < Car2 > { public : 聽聽聽聽 virtual 聽 void 聽SayCatName() 聽聽聽聽 { 聽聽聽聽聽聽聽聽cout聽 << 聽m_strName聽 << 聽endl; 聽聽聽聽} }; string 聽Car2::m_strName聽 = 聽 " Car2 " ; class 聽House2聽:聽 public 聽Category2 < House2 > { public : 聽聽聽聽 virtual 聽 void 聽SayCatName() 聽聽聽聽 { 聽聽聽聽聽聽聽聽cout聽 << 聽m_strName聽 << 聽endl; 聽聽聽聽} }; string 聽House2::m_strName聽 = 聽 " House2 " ; // 聽!(Template) // 聽Virtual聽&&聽inherit聽&&聽Template class 聽CategoryBase { public : 聽聽聽聽 virtual 聽 void 聽SayCatName()聽 = 聽 0 ; } ; template < typename聽T,聽typename聽TBase = CategoryBase > class 聽CategoryImpl聽:聽 public 聽TBase { protected : 聽聽聽聽 static 聽 string 聽聽聽聽m_strName; } ; class 聽Car3聽:聽 public 聽CategoryImpl < Car3 > { public : 聽聽聽聽 virtual 聽 void 聽SayCatName() 聽聽聽聽 { 聽聽聽聽聽聽聽聽cout聽 << 聽m_strName聽 << 聽endl; 聽聽聽聽} }; string 聽Car3::m_strName聽 = 聽 " Car3 " ; class 聽House3聽:聽 public 聽CategoryImpl < House3 > { public : 聽聽聽聽 virtual 聽 void 聽SayCatName() 聽聽聽聽 { 聽聽聽聽聽聽聽聽cout聽 << 聽m_strName聽 << 聽endl; 聽聽聽聽} }; string 聽House3::m_strName聽 = 聽 " House3 " ; // 聽!(Virtual聽&&聽inherit聽&&聽Template) int 聽_tmain( int 聽argc,聽_TCHAR * 聽argv[]) { 聽聽聽聽 // 聽test聽Virtual聽&&聽inherit 聽聽聽聽Category1 * 聽聽聽聽pCatInstance聽聽聽聽 = 聽 new 聽Car1(); 聽聽聽聽pCatInstance -> SayCatName(); 聽聽聽聽delete聽pCatInstance; 聽聽聽聽pCatInstance聽 = 聽NULL; 聽聽聽聽pCatInstance聽 = 聽 new 聽House1(); 聽聽聽聽pCatInstance -> SayCatName(); 聽聽聽聽delete聽pCatInstance; 聽聽聽聽pCatInstance聽 = 聽NULL; 聽聽聽聽 // 聽!(test聽Virtual聽&&聽inherit) 聽聽聽聽 // 聽test聽Template 聽聽聽聽Category2 < Car2 >* 聽聽聽聽pCar2聽聽聽聽 = 聽 new 聽Car2(); 聽聽聽聽pCar2 -> SayCatName(); 聽聽聽聽delete聽pCar2; 聽聽聽聽pCar2聽 = 聽NULL; 聽聽聽聽Category2 < House2 >* 聽聽聽聽pHouse2聽聽聽聽 = 聽 new 聽House2(); 聽聽聽聽pHouse2 -> SayCatName(); 聽聽聽聽delete聽pHouse2; 聽聽聽聽pHouse2聽 = 聽NULL; 聽聽聽聽 // 聽!(test聽Template) 聽聽聽聽 // 聽test聽Virtual聽&&聽inherit聽&&聽Template 聽聽聽聽CategoryBase * 聽聽聽聽pBase聽聽聽聽 = 聽 new 聽Car3(); 聽聽聽聽pBase -> SayCatName(); 聽聽聽聽delete聽pBase; 聽聽聽聽pBase聽 = 聽NULL; 聽聽聽聽pBase聽 = 聽 new 聽House3(); 聽聽聽聽pBase -> SayCatName(); 聽聽聽聽delete聽pBase; 聽聽聽聽pBase聽 = 聽NULL; 聽聽聽聽 // 聽!(test聽Virtual聽&&聽inherit聽&&聽Template) 聽聽聽聽 return 聽 0 ; } 閲岄潰浣撶幇浜嗗緢澶氱壒鎬э紝鏈変簺渚嬪闈欐佸嚱鏁扮殑宸у浣跨敤娌℃湁婕旂ず銆?br /> 渚嬪瓙瀹屽叏鏄湰浜鴻噯鎯沖嚭鏉ョ殑錛屾病鏈夊疄闄呮剰涔夛紝浠呬粠璇硶涓婂幓鑰冭檻銆?img src ="http://www.shnenglu.com/wlwlxj/aggbug/12936.html" width = "1" height = "1" /> ]]> std::string涓涓瀬鍏墮殣鏅﹀緱闂 http://www.shnenglu.com/wlwlxj/archive/2006/04/18/5819.html涓囪繛鏂?/dc:creator>涓囪繛鏂?/author>Tue, 18 Apr 2006 08:23:00 GMT http://www.shnenglu.com/wlwlxj/archive/2006/04/18/5819.html http://www.shnenglu.com/wlwlxj/comments/5819.html http://www.shnenglu.com/wlwlxj/archive/2006/04/18/5819.html#Feedback 7 http://www.shnenglu.com/wlwlxj/comments/commentRss/5819.html http://www.shnenglu.com/wlwlxj/services/trackbacks/5819.html 鏄ㄥぉ鍋氫竴涓猟ll錛屼唬鐮佸緢蹇啓瀹屼簡錛岀劧鑰屼嬌鐢ㄥ緱鏃跺欐繪槸閬囧埌string鍐呴儴鎸囬拡鍒犻櫎閿欒錛岄儊闂蜂簡涓澶╋紝浠婂ぉ娌″幓鍏徃錛屽ソ濂界爺絀朵簡涓涓嬨?br />棣栧厛鐪嬩笅涓嬮潰榪欐浠g爜錛屽0鏄庝袱涓猻tring瀵硅薄錛?br />
std::
string
聽聽s1聽
=
聽
"
wlwlxj
"
; std::
string
聽聽s2聽
=
聽
"
lxjwlwww
"
;
璋冭瘯鐘舵佷笅鍙互鐪嬪埌鍐呴儴鎸囬拡錛?br />s1=0x00364ff9 s2=0x00365061 鐒跺悗鎵ц
s2聽
=
聽s1;
鎸変笅f11錛岃繘鍏string婧愭枃浠訛細
_Myt
&
聽
operator
=
(
const
聽_Myt
&
聽_X)聽聽聽聽聽聽聽聽聽// 璧嬪兼搷浣滅 聽聽
{
return
聽(assign(_X));聽}聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽// 璋冪敤assign鍑芥暟
緇х畫榪涘叆assign(_X)鍑芥暟錛?/p>
_Myt
&
聽assign(
const
聽_Myt
&
聽_X) 聽聽聽聽聽聽聽聽
{
return
聽(assign(_X,聽
0
,聽npos));聽}聽聽聽// 璋冪敤assign鍑芥暟
緇х畫榪涘叆assign鍑芥暟錛屽ソ鎴忛兘鍦ㄨ繖閲岄潰錛?br />_Myt & 聽assign( const 聽_Myt & 聽_X,聽size_type聽_P,聽size_type聽_M) 聽聽聽聽聽聽聽聽 { if 聽(_X.size()聽 < 聽_P) 聽聽聽聽聽聽聽聽聽聽聽聽_Xran(); 聽聽聽聽聽聽聽聽size_type聽_N聽 = 聽_X.size()聽 - 聽_P; 聽聽聽聽聽聽聽聽 if 聽(_M聽 < 聽_N) 聽聽聽聽聽聽聽聽聽聽聽聽_N聽 = 聽_M; 聽聽聽聽聽聽聽聽 if 聽( this 聽 == 聽 & _X) 聽聽聽聽聽聽聽聽聽聽聽聽erase((size_type)(_P聽 + 聽_N)),聽erase( 0 ,聽_P); 聽聽聽聽聽聽聽聽 else 聽 if 聽( 0 聽 < 聽_N聽 && 聽_N聽 == 聽_X.size()聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽// 榪欎釜鍒嗘敮鎰忔濆氨鏄鏋滄嫹璐濇簮鏈夊唴瀹逛笖灝辨槸灝辨槸婧愭湰韜紝騫朵笖 聽聽聽聽聽聽聽聽聽聽聽聽 && 聽_Refcnt(_X.c_str())聽 < 聽_FROZEN聽 - 聽 1聽聽聽聽聽聽聽聽聽聽// 婧愬瓧絎︿覆寮曠敤嬈℃暟灝戜簬255-1嬈★紙鍙寮曠敤嬈℃暟鏈澶?55嬈★級錛?/span> 聽聽聽聽聽聽聽聽聽聽聽聽&& 聽allocator聽 == 聽_X.allocator)聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//涓旀簮瀛楃鍜岀洰鐨勫瓧絎﹀垎閰嶅櫒涓鑷?br /> 聽聽聽聽聽聽聽聽聽聽聽聽 {_Tidy( true );聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽// 鍒犻櫎鏈韓 聽聽聽聽聽聽聽聽聽聽聽聽_Ptr聽 = 聽(_E聽 * )_X.c_str();聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽// 澶嶅埗鍐呭鍒扮洰鐨勪覆 聽聽聽聽聽聽聽聽聽聽聽聽_Len聽 = 聽_X.size(); 聽聽聽聽聽聽聽聽聽聽聽聽_Res聽 = 聽_X.capacity(); 聽聽聽聽聽聽聽聽聽聽聽聽 ++ _Refcnt(_Ptr);聽}聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽// 澧炲姞涓嬈″紩鐢?/span> 聽聽聽聽聽聽聽聽else 聽 if 聽(_Grow(_N,聽 true )) 聽聽聽聽聽聽聽聽聽聽聽聽 {_Tr::copy(_Ptr,聽 & _X.c_str()[_P],聽_N); 聽聽聽聽聽聽聽聽聽聽聽聽_Eos(_N);聽} 聽聽聽聽聽聽聽聽return 聽( * this );聽} 榪欐牱緇撴灉灝辨槸璋冪敤=鍙蜂互鍚庯紝s2鍦板潃鍜宻1鍦板潃涓鏍鳳紝閮芥槸0x00364ff9銆?br /> 鍋囧鎴戜滑鍔ㄦ佸簱鏈夎繖鏍蜂竴涓被class DLL鎺ュ彛錛?/p>
SetString(std:: string 聽str) { m_str聽 = 聽str; } 鍦ㄥ鎴瘋皟鐢ㄦ椂鍊欙細
std:: string 聽str聽 = 聽 " wlwlxj " ; DLL聽d; d.SetString(str);聽 // 聽姝ゆ椂娌℃湁娣辨嫹璐濓紝鑰屾槸寮曠敤浜唖tr鍐呴儴鎸囬拡鍦板潃 鍦ㄨ皟鐢ㄧ粨鏉熺殑鏃跺欙紝dll鍐呴儴鍒犻櫎鎴愬憳鍙橀噺鐨勬椂鍊欙紝浼氬垽鏂璵_str鍐呴儴鎸囬拡鍚堟硶鎬э紝鐢變簬瀹為檯鍒嗛厤鏄湪璋冪敤绔紝鍦╠ll鍐呴儴鑷劧媯鏌ユ寚閽堥潪娉曘?br /> 瑙e喅鏂規硶灝辨槸閬垮厤std::string寮曠敤璁℃暟錛屾帴鍙e淇敼涓篠etString(const char*)錛岃繖鏍峰湪dll鍐呴儴鍒嗛厤鍐呭瓨錛屽唴閮ㄩ噴鏀撅紝灝變笉浼氭湁闂銆?img src ="http://www.shnenglu.com/wlwlxj/aggbug/5819.html" width = "1" height = "1" /> ]]>C++ Template: The Complete Guide 瀛︿範錛? 妯℃澘涓殑鍛藉悕 http://www.shnenglu.com/wlwlxj/archive/2006/04/08/5169.html涓囪繛鏂?/dc:creator>涓囪繛鏂?/author>Sat, 08 Apr 2006 03:38:00 GMT http://www.shnenglu.com/wlwlxj/archive/2006/04/08/5169.html http://www.shnenglu.com/wlwlxj/comments/5169.html http://www.shnenglu.com/wlwlxj/archive/2006/04/08/5169.html#Feedback 0 http://www.shnenglu.com/wlwlxj/comments/commentRss/5169.html http://www.shnenglu.com/wlwlxj/services/trackbacks/5169.html 絎?绔?妯℃澘涓殑鍚嶅瓧
鍚嶅瓧鍦ㄥぇ澶氭暟緙栫▼璇█涓兘鏄渶鍩烘湰鐨勬蹇碉紝紼嬪簭鍛樼敤瀹冩潵寮曠敤鍏堝墠鍒涘緩鐨勫璞°傚綋C++緙栬瘧鍣ㄩ亣鍒頒竴涓悕瀛楋紝瀹冭鍘繪煡鎵懼茍璇嗗埆鍝釜瀵硅薄琚紩鐢ㄣ備粠瀹炵幇鑰呰搴︽潵鐪嬶紝C++鍦ㄤ竴縐嶅己綾誨瀷璇█銆傝冭檻琛ㄨ揪寮廥*Y錛氬鏋淴鍜孻閮芥槸鍙橀噺鍚嶏紝閭d箞鏄箻娉曡〃杈懼紡錛涘鏋淴鏄被鍨嬪悕錛岃繖鏉¤鍙ユ妸Y澹版槑涓篨綾誨瀷鐨勪竴涓寚閽堛?br /> 榪欎釜渚嬪瓙琛ㄦ槑C++錛堝拰C涓鏍鳳級鏄笂涓嬫枃鏁忔劅鐨勮璦錛氬鏋滄病鏈変笂涓嬫枃錛屼竴鏉$▼搴忔寚浠ゅ緢闅捐緙栬瘧鍣ㄧ悊瑙c傝繖涓庢ā鏉挎湁浠涔堝叧緋誨憿錛熷棷錛屾ā鏉垮繀欏誨鐞嗘洿澶氱殑涓婁笅鏂囷細(1)妯℃澘鍐呴儴涓婁笅鏂囷紱(2)妯℃澘瀹炰緥鍖栨椂鐨勪笂涓嬫枃錛?3)妯℃澘瀹炰緥鍖栨椂妯℃澘鍙傛暟鐨勪笂涓嬫枃銆傚湪C++涓繀欏誨皬蹇冨鐞嗗悕瀛楋紝瀵規浣犱笉搴旇鎰熷埌鎯婅銆?br />9.1 鍚嶅瓧鍒嗙被瀛?/strong> 浜嬪疄涓奀++鐨勫悕瀛楀垎綾繪湁寰堝縐嶃備負浜嗕究浜庤蹇嗭紝鎴戜滑鎻愪緵浜嗚〃鏍?.1鍜岃〃鏍?.2鎻忚堪浜嗚繖浜涘垎綾匯傚垢榪愮殑鏄綘鍙敤鐔熸倝涓嬮潰2縐嶄富瑕佺殑鍛藉悕姒傚康錛屽氨鍙互寰堝ソ鐨勭悊瑙++妯℃澘涓亣鍒扮殑闂錛?br /> 1銆侀檺瀹氬悕錛氬悕瀛楀湪浣滅敤鍩熶腑琚樉寮忔寚紺轟綔鐢ㄥ煙瑙f瀽榪愮畻絎?:: )鎴栬呮垚鍛樿闂繍綆楃(.鎴栬?font face="Courier New">->)銆備緥濡傦細this-> count鏄檺瀹氬悕錛岃宑ount涓嶆槸錛堝敖綆ount鏈夊彲鑳芥槸鏌愪釜綾葷殑鎴愬憳錛夈?br />2銆佷緷璧栧悕錛氬悕瀛椾緷璧栦簬妯℃澘鍙傛暟銆備緥濡傦細std::vector<T>::iterator錛屽鏋淭鏄ā鏉垮弬鏁幫紝iterator灝辨槸渚濊禆鍚嶏紱濡傛灉T鏄凡鐭ョ被鍨嬶紙姣斿int錛夛紝iterator灝辨槸闈炰緷璧栧悕銆?br /> 琛ㄦ牸聽9.1.聽鍚嶅瓧鍒嗙被瀛?(絎竴閮ㄥ垎) 鏍囪瘑絎?/p>
鐢卞瓧絎︺佷笅鍒掔嚎(_)鍜屾暟瀛楃粍鎴愮殑鍚嶅瓧錛屼笉鑳戒互鏁板瓧寮澶淬傛湁涓浜涙爣璇嗙鏄繚鐣欑殑錛屼綘涓嶈兘鍦ㄨ嚜宸辯▼搴忎腑寮曞叆瀹冧滑(涓縐嶉伩鍏嶅紩鍏ョ殑絎ㄦ柟娉曟槸浠鎴栬卂_浣滀負鍓嶇紑)銆傚瓧絎︾殑姒傚康寰堝箍娉涳紝鍖呮嫭瀵歸潪瀛楁瘝璇█緙栫爜鐨勭壒孌婂瓧絎︺?/p>
鎿嶄綔絎︾被
鍏抽敭瀛梠perator 鍚庨潰璺熺潃涓涓鍙楓備緥濡俹perator new鍜宱perator []銆傚緢澶氭搷浣滅閮芥槸澶氫箟鐨勶紝渚嬪operator &鍙互鏄寜浣嶄笌榪愮畻錛屼篃鍙互鏄彇鍦板潃榪愮畻銆?/p>
杞崲綾?/p>
鎸囩ず鐢ㄦ埛瀹氫箟鐨勯殣寮忕被鍨嬭漿鎹€備緥濡俹perator int&錛屾垜浠彲浠ユ妸瀹冭漿鎹㈡垚int綾誨瀷鐨勪綅涓庢搷浣?/p>
妯℃澘綾?/p>
template鍚庨潰璺熺潃<>錛岄噷闈㈡槸妯℃澘鍙傛暟銆備緥濡侺ist<T, int, 0>(涓ユ牸璁詫紝C++鏍囧噯鍙厑璁哥畝鍗曠殑鏍囪瘑絎︿負妯℃澘鍚嶏紝鎴栬鏈変簤璁鎿嶄綔絎︾被涔熸槸鍏佽鐨勶紱渚嬪錛歰perator+<X<int> >)銆?/p>
闈為檺瀹氱被
鏇翠竴鑸殑鏍囪瘑絎︺傚彲浠ユ槸涓婇潰鍑犵被(鏍囪瘑絎︺佹搷浣滅綾匯佽漿鎹㈢被鎴栨ā鏉跨被)鎴栬呮槸鏋愭瀯鍚?渚嬪錛屽儚~Data聽鎴?~List<T, T, N>涔嬬被鐨?/tt>絎﹀彿)銆?/font>
闄愬畾綾?/p>
闈為檺瀹氱被鍓嶉潰鍔犱笂綾繪垨鑰呭悕瀛楃┖闂撮檺瀹氾紝鎴栬呭叏灞浣滅敤鍩熻В鏋愯繍綆楃銆傛敞鎰忎竴涓悕瀛楁湰韜彲浠ユ槸闄愬畾鐨勶紝渚嬪::X, S::x , Array<T>::y , and ::N::A<T>::z銆?/tt>
闄愬畾鍚?/p>
榪欎釜鍚嶈瘝鍦ㄦ爣鍑嗕腑鏄病鏈夌殑錛屾垜浠敤瀹冩潵琛ㄧず鎵ц闄愬畾鏌ユ壘鐨勫悕瀛椼傜壒瀹氭儏鍐典笅錛屽氨鏄檺瀹氭爣璇嗘垨鑰呭湪闈為檺瀹氭爣璇嗗墠闈㈡樉寮忎嬌鐢ㄦ垚鍛樿闂繍綆楃(. 聽鎴栬?-> )銆備緥濡係::x, this->f ,聽鍜?p->A::m銆傜劧鑰岋紝闄や簡class_mem 鍜宼his->class_mem鍦ㄤ笂涓嬫枃鐜涓槸絳夊悓鐨勬儏鍐典笅涓嶉渶瑕侀檺瀹氬悕錛屽叾浠栨儏鍐典笅蹇呴』鏄懼紡浣跨敤鎴愬憳璁塊棶榪愮畻絎︺?/tt>
闈為檺瀹氬悕
闈為檺瀹氭爣璇嗕笉鏄潪闄愬畾鍚嶃傝繖涔熶笉鏄竴涓爣鍑嗕腑鐨勬湳璇紝浣嗘槸鐩稿綋浜庢墽琛岄潪闄愬畾鏌ユ壘涓殑鍚嶅瓧銆?/p>
琛ㄦ牸聽9.2. 鍚嶅瓧鍒嗙被瀛?(絎簩閮ㄥ垎) 鍚嶅瓧
闄愬畾鎴栬呴潪闄愬畾鐨勫悕瀛椼?/p>
渚濊禆鍚?/p>
鍚嶅瓧渚濊禆浜庢ā鏉垮弬鏁般備換浣曞惈鏈夋ā鏉垮弬鏁扮殑闄愬畾鎴栬呴潪闄愬畾鍚嶅瓧閮芥槸渚濊禆鍚嶃傛澶栵紝鎴愬憳璁塊棶鎿嶄綔絎?. 鎴?tt>->) 淇グ鐨勯檺瀹氬悕 錛屽鏋滄搷浣滅宸﹁竟鐨勮〃杈懼紡綾誨瀷渚濊禆浜庢ā鏉垮弬鏁幫紝閭d箞榪欎釜闄愬畾鍚嶆槸渚濊禆鐨勩傚挨鍏惰繖縐嶆儏鍐碉細this->b涓殑b鍦ㄦā鏉夸腑渚挎槸渚濊禆鍚嶃傛渶鍚庯紝ident(x, y, z)璋冪敤褰㈠紡涓殑ident褰撲笖浠呭綋鍙傛暟琛ㄨ揪寮忎腑鏈夌被鍨嬩緷璧栦簬妯℃澘鍙傛暟銆?/font>
闈炰緷璧栧悕
涓嶇鍚堜笂闈㈡弿榪扮殑鍚嶅瓧灝變笉鏄緷璧栧悕銆?/p>
涓婇潰榪欎簺鍚嶈瘝閫氬父鐢ㄦ潵鎻忚堪C++妯℃澘涓殑闂錛岄氳涓杈規槸寰堟湁鐢ㄧ殑錛屾垜浠彲浠ョ啛鎮夎繖浜涘悕璇嶏紝浣嗘病鏈夊繀瑕佽浣忔瘡涓悕璇嶇‘鍒囩殑鎰忔濄傞渶瑕佺殑鏃跺欙紝鎴戜滑鍙互閫氳繃绱㈠紩寰堝鏄撶殑鏌ラ槄銆?img src ="http://www.shnenglu.com/wlwlxj/aggbug/5169.html" width = "1" height = "1" /> ]]> C++ Template: The Complete Guide 瀛︿範錛?.5鍚庤 http://www.shnenglu.com/wlwlxj/archive/2006/04/07/5157.html涓囪繛鏂?/dc:creator>涓囪繛鏂?/author>Fri, 07 Apr 2006 14:24:00 GMT http://www.shnenglu.com/wlwlxj/archive/2006/04/07/5157.html http://www.shnenglu.com/wlwlxj/comments/5157.html http://www.shnenglu.com/wlwlxj/archive/2006/04/07/5157.html#Feedback 0 http://www.shnenglu.com/wlwlxj/comments/commentRss/5157.html http://www.shnenglu.com/wlwlxj/services/trackbacks/5157.html 8.5 鍚庤
鑷?0騫翠唬鍚庢湡寮曞叆C++妯℃澘錛屽叾姒傚康鍜岃娉曚竴鐩翠繚鎸佺浉瀵圭ǔ瀹氥傜被妯℃澘銆佸嚱鏁版ā鏉夸互鍙婄被鍨嬪弬鏁般傞潪綾誨瀷鍙傛暟鏄ā鏉挎渶鍩虹鐨勫伐鍏楓?br /> 鐒惰岋紝鍦ㄦ渶鍒濊璁$殑鍩虹涓婅繕鏄坊鍔犱簡涓浜涘唴瀹癸紝澶ч儴鍒嗘槸C++鏍囧噯搴撶殑闇瑕併傛垚鍛樻ā鏉挎槸娣誨姞鍐呭涓渶鍩烘湰鐨勩傚緢濂囨紝鍙湁鎴愬憳鍑芥暟妯℃澘琚寮忕撼鍏++鏍囧噯錛屾垚鍛樼被妯℃澘鎴愪負鏍囧噯鐨勪竴閮ㄥ垎榪樺瓨鍦ㄤ簤璁?br /> 鍙嬪厓妯℃澘銆佺己鐪佹ā鏉垮弬鏁板拰妯℃澘妯℃澘鍙傛暟閮芥槸鏈榪戞墠娣誨姞榪涜璦涓殑銆傚0鏄庢ā鏉挎ā鏉垮弬鏁版湁鏃跺欑О浣滈珮綰ф硾鎬э紝瀹冧滑鏈鍒濊寮曞叆鍦–++鏍囧噯搴撲腑鎻愪緵涓縐嶅垎閰嶅櫒妯″瀷錛屽悗鏉ヨ繖縐嶅垎閰嶅櫒妯″瀷琚叾瀹冧笉渚濊禆妯℃澘妯℃澘鍙傛暟鎵鏇夸唬銆傜敱浜庢ā鏉挎ā鏉垮弬鏁拌鏍艱鏄庡埌鏍囧噯鍖栬繘紼嬪悗鏈熶粛涓嶅畬鍠勶紝鍑犱箮瑕佽浠庤璦涓墧闄ゃ傛渶緇堢敱浜嶤++鏍囧噯濮斿憳浼氬ぇ閮ㄥ垎鎴愬憳璧炴垚淇濈暀涓嬫潵騫跺畬鎴愪簡瑙勬牸璇存槑銆?img src ="http://www.shnenglu.com/wlwlxj/aggbug/5157.html" width = "1" height = "1" /> ]]> C++ Template: The Complete Guide 瀛︿範錛?.4鍙嬪厓 http://www.shnenglu.com/wlwlxj/archive/2006/04/06/5119.html涓囪繛鏂?/dc:creator>涓囪繛鏂?/author>Thu, 06 Apr 2006 15:48:00 GMT http://www.shnenglu.com/wlwlxj/archive/2006/04/06/5119.html http://www.shnenglu.com/wlwlxj/comments/5119.html http://www.shnenglu.com/wlwlxj/archive/2006/04/06/5119.html#Feedback 0 http://www.shnenglu.com/wlwlxj/comments/commentRss/5119.html http://www.shnenglu.com/wlwlxj/services/trackbacks/5119.html 8.4 鍙嬪厓 澹版槑鍙嬪厓鐨勬濇兂鍏跺疄寰堢畝鍗曪細鏍囪瘑涓涓被鎴栬呭嚱鏁幫紝瀵逛簬灝嗗叾澹版槑涓哄弸鍏冩墍鍦ㄧ殑綾誨叿鏈夋煇縐嶇壒鏉冦備絾鏄湪浠ヤ笅涓や釜鏂歸潰錛岄棶棰樹技涔庢湁鐐瑰鏉傦細 1銆佷竴涓弸鍏冨0鏄庡彧鑳芥槸涓涓疄浣撶殑鍞竴澹版槑錛堟敞錛氭垜榪樻病鐞嗚В錛屼笉鑳借В閲婏級 2銆佸弸鍏冨嚱鏁板0鏄庣殑鍚屾椂鍙互瀹氫箟銆?br /> 鍙嬪厓綾誨湪澹版槑鐨勬椂鍊欎笉鍏佽瀹氫箟錛屾墍浠ヤ竴鑸笉浼氭湁闂銆傚湪妯℃澘鎯呭喌涓嬶紝鍞竴涓鐐逛笉鍚屽氨鏄彲浠ュ皢綾繪ā鏉跨殑涓涓壒瀹氬疄渚嬪0鏄庝負鍙嬪厓錛?br />template < typename聽T > class 聽Node; template < typename聽T > class 聽Tree { 聽聽聽聽friend聽 class 聽Node < T > ; 聽聽聽聽鈥?br /> } ; 娉ㄦ剰錛氱被妯℃澘鍦ㄨ涓涓被鎴栬呯被妯℃澘澹版槑涓哄弸鍏冪殑鏃跺欏繀欏繪槸鍙鐨勶紝鑰屽浜庢櫘閫氱殑綾誨垯娌℃湁榪欑闇姹傦細template < typename聽T > class 聽Tree {聽 聽聽聽聽friend聽 class 聽Factory;聽聽聽聽聽聽聽聽 // 聽OK,聽even聽if聽first聽declaration聽of聽Factory 聽聽聽聽friend聽 class 聽 class 聽Node < T > ;聽聽 // 聽ERROR聽if聽Node聽isn't聽visible } ;聽 8.4.1 鍙嬪厓鍑芥暟 鍑芥暟妯℃澘鐨勫疄渚嬪彲浠ラ氳繃鍦ㄥ嚱鏁板悕鍚庨潰璺熶竴瀵?lt;>灝嗗叾澹版槑涓哄弸鍏冦?lt;>閲岄潰鍙互鍖呭惈妯℃澘鍙傛暟錛屽鏋滅紪璇戝櫒鍙互鎺ㄥ鍑烘ā鏉垮弬鏁幫紝鍙互鐪佺暐璋冩ā鏉垮弬鏁幫細template < typename聽T1,聽typename聽T2 > void 聽combine(T1,聽T2); class 聽Mixer { 聽聽聽聽friend聽 void 聽combine <> ( int & ,聽 int & ); 聽聽聽聽 // 聽OK:聽T1聽=聽int&,聽T2聽=聽int& 聽聽聽聽friend聽 void 聽combine < int ,聽 int > ( int ,聽 int ); 聽聽聽聽 // 聽OK:聽T1聽=聽int,聽T2聽=聽int 聽聽聽聽friend聽 void 聽combine < char > ( char ,聽 int ); 聽聽聽聽 // 聽OK:聽T1聽=聽char聽T2聽=聽int 聽聽聽聽friend聽 void 聽combine < char > ( char & ,聽 int ); 聽聽聽聽 // 聽ERROR:聽doesn't聽match聽combine()聽template 聽聽聽聽friend聽 void 聽combine <> ( long ,聽 long )聽 {聽} 聽聽聽聽// 聽ERROR:聽definition聽not聽allowed! } ; 錛堟敞錛氬湪GCC涓嬫祴璇曪紝VS2003涓嶈錛?br />娉ㄦ剰錛氭垜浠彲浠ュ妯℃澘榪涜涓撻棬鍖栧畾涔夛紝浣嗘槸涓嶈兘瀵規ā鏉垮疄渚嬭繘琛屽畾涔夛紝鎵浠ュ0鏄庢ā鏉垮疄渚嬩負鍙嬪厓鏃朵笉鑳藉畾涔夈?br /> 濡傛灉鍚嶅瓧鍚庨潰璺熸湁<>錛屾湁2縐嶅彲鑳斤細 1銆佸鏋滃悕瀛楁病鏈夐檺瀹氳瘝錛堜篃灝辨槸鍓嶉潰娌℃湁:: 錛夛紝灝變笉鍙兘鏄ā鏉垮疄渚嬨傚鏋滃湪澹版槑鍙嬪厓鐨勫湴鏂規病鏈夐潪妯℃澘鍑芥暟鍖歸厤鐨勮瘽錛屽氨鏄嚱鏁扮殑棣栨澹版槑錛屽0鏄庡悓鏃跺彲浠ュ畾涔夈?br />2銆佸鏋滃悕瀛楁湁闄愬畾璇嶏紝閭d箞涓瀹氫笌鍓嶉潰澹版槑鐨勫嚱鏁版垨鑰呮ā鏉垮嚱鏁版湁鍏籌紝鍦ㄥ尮閰嶇殑鏃跺欎紭鍏堥夋嫨闈炲嚱鏁版ā鏉胯屼笉鏄嚱鏁版ā鏉匡紝鐒惰屽湪澹版槑鐨勬椂鍊欐槸涓嶅厑璁稿畾涔夌殑銆?br /> 涓嬮潰鐨勪緥瀛愭葷粨浜嗗悇縐嶅彲鑳芥э細void 聽multiply聽( void * );聽聽聽 // 聽ordinary聽function聽 template聽< typename聽T > 聽 void 聽multiply(T);聽聽聽聽聽聽聽聽 // 聽function聽template聽 class 聽Comrades聽 {聽 聽聽聽聽friend聽 void 聽multiply( int )聽 {} 聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 聽defines聽a聽new聽function聽::multiply(int)聽 聽聽聽聽friend聽void 聽::multiply( void * );聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 聽refers聽to聽the聽ordinary聽function聽above;聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 聽not聽to聽the聽multiply<void*>聽instance聽 聽聽聽聽friend聽void 聽::multiply( int );聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 聽refers聽to聽an聽instance聽of聽the聽template聽 聽聽聽聽friend聽void 聽::multiply < double *> ( double * );聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 聽qualified聽names聽can聽also聽have聽angle聽brackets聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 聽but聽a聽template聽must聽be聽visible.聽 聽聽聽聽friend聽void 聽::error()聽 {} 聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 聽ERROR:聽a聽qualified聽friend聽cannot聽be聽a聽definition聽 } ;聽 錛堟敞錛氬湪VS2003鍜岃鍒欏鍚堬紝GCC涓婄紪璇戝畬鍏ㄩ氳繃錛?br /> 鍓嶉潰渚嬪瓙鎴戜滑璁ㄨ浜嗕竴鑸被錛堢浉瀵逛簬綾繪ā鏉匡級閲岄潰鐨勫弸鍏冨嚱鏁幫紝閬靛畧鐨勮鍒欏悓鏍烽傜敤浜庣被妯℃澘錛屼絾妯℃澘鍙傛暟鍦ㄧ‘瀹氬弸鍏冨嚱鏁扮殑鏃跺欎細璧蜂綔鐢細template < typename聽T > class 聽Node聽 { 聽聽聽聽Node < T >* 聽allocate(); } ;聽 template < typename聽T > class 聽List聽 { 聽聽聽聽friend聽Node < T >* 聽Node < T > ::allocate(); } ; 鐒惰岋紝褰撳弸鍏冨嚱鏁板湪綾繪ā鏉塊噷闈㈠0鏄庡茍瀹氫箟鐨勬椂鍊欎細鍑虹幇鏈夎叮鐨勭幇璞★紝鍥犱負妯℃澘閲岄潰浠諱綍涓滆タ鍦ㄦ湭瀹炰緥鍖栦箣鍓嶉兘鍙槸澹版槑鑰屾病鏈夊叿鐜般傝冭檻涓嬮潰鐨勪緥瀛愶細template < typename聽T > class 聽Creator聽 {聽 聽聽聽聽friend聽 void 聽appear()聽 {聽聽 // 聽a聽new聽function聽::appear(),聽but聽it聽doesn't 聽聽聽聽聽聽聽聽鈥β犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅?/span>// 聽exist聽until聽Creator聽is聽instantiated 聽聽聽聽} }; Creator < void > 聽miracle;聽聽 // 聽::appear()聽is聽created聽at聽this聽point Creator < double > 聽oops;聽聽聽 // 聽ERROR:聽::appear()聽is聽created聽a聽second聽time! 榪欎釜渚嬪瓙涓ā鏉跨殑涓ゆ瀹炰緥鍖栧鑷村悓涓鍑芥暟瀹氫箟澶氭錛岃繚鍙嶄簡涓嬈″畾涔夎鍒欍?br /> 鎵浠ュ浜庝笂闈㈢殑鎯呭喌錛屾垜浠繀欏葷‘淇濈被妯℃澘鐨勬ā鏉垮弬鏁板嚭鐜板湪澹版槑騫跺畾涔夌殑鍙嬪厓鍑芥暟褰㈠弬閲岄潰錛堥櫎闈炴兂闃繪澶氭瀹炰緥鍖栦竴涓被妯℃澘錛岃繖濂藉儚涓嶅お鍙兘錛夈傛妸榪欎釜瑙勫緥榪愮敤鍒板墠闈㈤偅涓緥瀛愶細template < typename聽T > class 聽Creator聽 {聽 聽聽聽聽friend聽 void 聽feed(Creator < T >* ) {聽聽 // 聽every聽T聽generates聽a聽different 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 聽function聽::feed() 聽聽聽聽} }; Creator < void > 聽one;聽聽聽聽聽 // 聽generates聽::feed(Creator<void>*) Creator < double > 聽two;聽聽聽 // 聽generates聽::feed(Creator<double>*) 榪欎釜渚嬪瓙涓紝Creator姣忎釜瀹炰緥閮界敓鎴愪笉鍚岀殑鍑芥暟銆傛敞鎰忚繖浜涘嚱鏁版槸綾繪ā鏉垮疄渚嬩駭鐢熺殑錛屼絾鍑芥暟鏈韓騫朵笉鏄嚱鏁版ā鏉跨殑瀹炰緥錛岃屾槸鏅氬嚱鏁般?br />榪樿娉ㄦ剰榪欎簺鍑芥暟浣撳畾涔変簬綾諱腑錛岄粯璁ゆ槸鍐呰仈鐨勶紝鎵浠ュ湪涓や釜緲昏瘧鍗曞厓浜х敓鐩稿悓鐨勫嚱鏁版槸娌℃湁闂鐨勩傦紙娉細鐢變簬鍐呰仈鍑芥暟鍩轟簬浠g爜鏇夸唬鎶鏈紝鎵浠ヤ竴涓嚱鏁板畾涔夋墍鍦ㄧ殑h鏂囦歡琚嬈″寘鍚笉浼氭湁闂錛屽唴鑱斿嚱鏁板湪緙栬瘧鍣ㄧ湅鏉ュ氨鏄竴孌典唬鐮併傦級8.4.2 鍙嬪厓妯℃澘 涓鑸儏鍐墊垜浠兘鏄妸鍑芥暟妯℃澘鎴栬呯被妯℃澘鐨勬煇涓瀹炰緥澹版槑涓哄弸鍏冿紝浣嗘妸妯℃澘鏈韓澹版槑涓哄弸鍏冩湁鏃跺欎篃鏄潪甯告湁鐢ㄧ殑銆傝繖灝遍渶瑕佹墍璋撶殑妯℃澘鍙嬪厓錛屼緥濡傦細class 聽Manager聽 {聽 聽聽聽聽template < typename聽T > 聽聽聽聽friend聽class 聽Task; 聽聽聽聽 聽聽聽聽template < typename聽T > 聽聽聽聽friend聽void 聽Schedule < T > ::dispatch(Task < T >* ); 聽聽聽聽 聽聽聽聽template < typename聽T > 聽聽聽聽friend聽int 聽ticket()聽 { 聽聽聽聽聽聽聽聽 return 聽 ++ Manager::counter; 聽聽聽聽} 聽 聽聽聽聽 static 聽 int 聽counter; } ; 鍜屾櫘閫氬弸鍏冨嚱鏁頒竴鏍鳳紝娌℃湁闄愬畾璇嶄笖鍚嶅瓧鍚庨潰娌℃湁<>鐨勫嚱鏁版ā鏉垮湪澹版槑涓哄弸鍏冨悓鏃跺彲浠ュ畾涔夈?br />澹版槑鍘熷鍑芥暟妯℃澘鎴栬呭師濮嬬被妯℃澘涓哄弸鍏冪殑鏃跺欙紝鎵鏈夌浉鍏崇殑鍋忕壒鍖栦互鍙婃樉紺虹壒渚嬪寲閮借嚜鍔ㄦ垚涓哄弸鍏冦?br />錛堟敞錛氭祴璇曚唬鐮?br />class 聽Manager聽 {聽 聽聽聽聽template < typename聽T > 聽聽聽聽 // 聽firend聽template 聽聽聽聽friend聽 class 聽Task; private : 聽聽聽聽 int 聽聽聽聽_dat; } ; template < typename聽T > class 聽Task聽 { } ; template <> class 聽Task < int > 聽 {聽聽聽聽聽聽聽聽聽聽聽聽 // 聽specialization public : 聽聽聽聽 void 聽accessData() 聽聽聽聽 { 聽聽聽聽聽聽聽聽_manager._dat聽 = 聽 0 ;聽聽聽聽 // 聽can聽access聽Manager's聽private聽data 聽聽聽聽} private : 聽聽聽聽Manager聽聽聽聽_manager; } ; 錛?br />(鏈妭瀹岋紝姹?..... 鑷繁鏀惰幏涓嶅皬) ]]> 鑳界敓鎴愯繖涓被鐨勪竴涓璞″槢錛燂紵錛?/title> http://www.shnenglu.com/wlwlxj/archive/2006/04/05/5052.html涓囪繛鏂?/dc:creator>涓囪繛鏂?/author>Wed, 05 Apr 2006 15:24:00 GMT http://www.shnenglu.com/wlwlxj/archive/2006/04/05/5052.html http://www.shnenglu.com/wlwlxj/comments/5052.html http://www.shnenglu.com/wlwlxj/archive/2006/04/05/5052.html#Feedback 12 http://www.shnenglu.com/wlwlxj/comments/commentRss/5052.html http://www.shnenglu.com/wlwlxj/services/trackbacks/5052.html template < typename聽T,聽template < T聽a > 聽 class 聽T2 > class 聽TmTm { } ; ]]> 涓涓ā鏉垮閥濡欐妧鏈紝璇硶鎶宸?/title> http://www.shnenglu.com/wlwlxj/archive/2006/04/05/5051.html涓囪繛鏂?/dc:creator>涓囪繛鏂?/author>Wed, 05 Apr 2006 14:26:00 GMT http://www.shnenglu.com/wlwlxj/archive/2006/04/05/5051.html http://www.shnenglu.com/wlwlxj/comments/5051.html http://www.shnenglu.com/wlwlxj/archive/2006/04/05/5051.html#Feedback 3 http://www.shnenglu.com/wlwlxj/comments/commentRss/5051.html http://www.shnenglu.com/wlwlxj/services/trackbacks/5051.html 鐮旂┒Boost鍓嶏紝鎯蟲繁鍏ヤ簡瑙d竴涓嬫ā鏉挎妧鏈紝鎵炬潵涓鏈功銆奀++ Template:The Complete Guide銆嬬爺絀躲?br />閲岄潰鏈夎繖鏍蜂竴涓皬鎶宸э紝鍒ゆ柇涓涓被涓槸鍚︽湁鏌愮綾誨艦銆備笅闈㈡槸浠g爜錛?Win 2K+ VS2003)
#include聽
<
iostream
>
//
聽榪斿洖綾誨瀷,澶у皬鍒嗗埆涓?銆?
typedef聽
char
聽RT1; typedef聽
struct
{ 聽聽聽聽
char
聽a[
2
]; }
聽RT2;
//
聽閫夋嫨榪欎釜鐗堟湰灝嗚繑鍥瀋har,澶у皬涓?
template
<
typename聽T
>
聽RT1聽test(typename聽T::X聽
const
*
)
{ 聽聽聽聽
int
聽聽聽聽dumy聽聽聽聽
=
聽
0
; 聽聽聽聽dumy
++
; }
//
聽閫夋嫨榪欎釜鐗堟湰灝嗚繑鍥瀋har,澶у皬涓?
template
<
typename聽T
>
聽RT2聽test( )
{ 聽聽聽聽
int
聽聽聽聽dumy聽聽聽聽
=
聽
0
; 聽聽聽聽dumy
++
; }
//
聽渚濋潬緙栬瘧鍣ㄨ嚜鍔ㄩ夋嫨test鍑芥暟,鐒跺悗渚濇嵁榪斿洖綾誨瀷鍒ゆ柇鏄惁鍚湁X
template
<
typename聽T
>
bool
聽type_has_member_type_X()
{ 聽聽聽聽
return
聽(
sizeof
(test
<
T
>
(
0
))聽
==
聽
1
); }
//
聽鏈塜綾誨瀷鐨勭被
class
聽HasX
{
public
: 聽聽聽聽
class
聽X 聽聽聽聽
{ 聽聽聽聽}
; }
;
//
聽鏃燲綾誨瀷鐨勭被
class
聽NonX
{
public
: 聽聽聽聽
class
聽Y 聽聽聽聽
{ 聽聽聽聽}
; }
;
int
聽_tmain(
int
聽argc,聽_TCHAR
*
聽argv[])
{ 聽聽聽聽
//
聽緙栬瘧鍣ㄩ夋嫨閲嶈澆鍑芥暟絳栫暐:閫夋嫨綾誨瀷鏈鍖歸厤鐗堟湰 聽聽聽聽
//
聽鍊懼悜浜庢妸0杞寲涓哄父閲忕┖鎸囬拡,鎵浠ラ夋嫨榪斿洖涓篟T1鐗堟湰
聽聽聽聽
if
(type_has_member_type_X
<
HasX
>
()) 聽聽聽聽
{ 聽聽聽聽聽聽聽聽std::cout聽
<<
聽
"
Has聽X
"
聽
<<
聽std::endl; 聽聽聽聽}
聽聽聽聽
else
聽聽聽聽
{ 聽聽聽聽聽聽聽聽std::cout聽
<<
聽
"
Non聽X
"
聽
<<
聽std::endl; 聽聽聽聽}
聽聽聽聽
//
聽娌℃湁T::X,鎵浠ラ夋嫨榪斿洖涓篟T2鐗堟湰
聽聽聽聽
if
(type_has_member_type_X
<
NonX
>
()) 聽聽聽聽
{ 聽聽聽聽聽聽聽聽std::cout聽
<<
聽
"
Has聽X
"
聽
<<
聽std::endl; 聽聽聽聽}
聽聽聽聽
else
聽聽聽聽
{ 聽聽聽聽聽聽聽聽std::cout聽
<<
聽
"
Non聽X
"
聽
<<
聽std::endl; 聽聽聽聽}
聽聽聽聽
return
聽
0
; }
杈撳嚭緇撴灉: Has X Non X ]]> 鎶戝埗妯℃澘浠g爜鑶ㄨ儉鐨勪竴縐嶆妧鏈?/title> http://www.shnenglu.com/wlwlxj/archive/2006/03/27/4659.html涓囪繛鏂?/dc:creator>涓囪繛鏂?/author>Mon, 27 Mar 2006 10:54:00 GMT http://www.shnenglu.com/wlwlxj/archive/2006/03/27/4659.html http://www.shnenglu.com/wlwlxj/comments/4659.html http://www.shnenglu.com/wlwlxj/archive/2006/03/27/4659.html#Feedback 7 http://www.shnenglu.com/wlwlxj/comments/commentRss/4659.html http://www.shnenglu.com/wlwlxj/services/trackbacks/4659.html 妯℃澘鏄竴縐嶆簮鐮佸鐢ㄦ妧鏈?鍦ㄦ煇浜涙儏鍐典笅浣跨敤瀹冨彲浠ヤ嬌浠g爜鐪嬭搗鏉ラ潪甯鎬紭闆?钁楀悕鐨刡oost搴撳氨鏄ā鏉垮彂鎵殑鍏歌寖. 鐒惰屾ā鏉夸篃瀛樺湪寮婄,澶ч噺浣跨敤妯℃澘鍙兘瀵艱嚧浠g爜鑶ㄨ儉.涓嬮潰浠嬬粛涓縐嶈В鍐崇殑鏂規:
鎴戜滑棣栧厛鐪嬩竴孌典竴鑸唬鐮?
template
<
typename聽T
>
class
聽Vector
{
public
: 聽聽聽聽
virtual
聽
void
聽Say() 聽聽聽聽
{ 聽聽聽聽聽聽聽聽
const
聽type_info
&
聽聽聽聽t聽
=
聽typeid(T); 聽聽聽聽聽聽聽聽std::cout聽
<<
聽
"
Vector<
"
聽
<<
聽t.name()聽
<<
聽
"
>::Hello
"
聽
<<
聽std::endl; 聽聽聽聽}
}
;
//
聽鐗逛緥鍖?/span>
template
<>
class
聽聽Vector
<
void
*>
{
public
: 聽聽聽聽
virtual
聽
void
聽Say() 聽聽聽聽
{ 聽聽聽聽聽聽聽聽std::cout聽
<<
聽
"
Vector<void*>::Hello
"
聽
<<
聽std::endl; 聽聽聽聽}
}
;
int
聽_tmain(
int
聽argc,聽_TCHAR
*
聽argv[])
{ 聽聽聽聽Vector
<
int
*>
聽聽聽聽pIntVec; 聽聽聽聽pIntVec.Say(); 聽聽聽聽Vector
<
double
*>
聽聽聽聽pDoubleVec; 聽聽聽聽pDoubleVec.Say(); 聽聽聽聽
return
聽
0
; }
杈撳嚭: Vector<int *>::Hello Vector<double *>::Hello 浠庤繖閲?鎴戜滑鍙互鐪嬪嚭紼嬪簭鍦ㄨ繍琛岀殑榪囩▼涓敓浜т簡涓ゅ垎Vector鐨勪唬鐮?int*鍜宒ouble*),灝界榪欓噷鏈夌壒渚嬪寲,鐒惰岀被鍨嬩笉鍖歸厤,緙栬瘧鍣ㄥ湪緙栬瘧榪囩▼涓棤娉曞畾浣嶅埌鐗逛緥鍖栫増鏈?濡傛灉榪欎釜Vector琚互鐢ㄧ殑鍖?鎴戞兂鍗充嬌鏄竴涓腑絳夎妯$殑紼嬪簭涔熷彲鑳借楄垂鎴愬厗瀛楄妭鐨勪唬鐮佹帶浠?
鎴戜滑蹇呴』瀵繪壘涓縐嶄腑闂存ˉ姊佷嬌緙栬瘧鍣ㄥ湪緙栬瘧榪囩▼涓畾浣嶅埌void*鐨勭壒渚嬪寲鐗堟湰.鎸夌収妯℃澘閫夋嫨絳栫暐,緙栬瘧鍣ㄦ繪槸閫夋嫨鏈鐗逛緥鍖栫殑妯℃澘,鎴戜滑鍙互閫氳繃涓涓腑闂寸殑妯℃澘鑱旂郴璧蜂笂闈袱涓増鏈殑妯℃澘.涓嬮潰鐪嬩竴孌典唬鐮?
template
<
typename聽T
>
class
聽Vector
{
public
: 聽聽聽聽
virtual
聽
void
聽Say() 聽聽聽聽
{ 聽聽聽聽聽聽聽聽std::cout聽
<<
聽
"
Vector::Hello
"
聽
<<
聽std::endl; 聽聽聽聽}
}
;
//
聽鐗逛緥鍖?/span>
template
<>
class
聽聽Vector
<
void
*>
{
public
: 聽聽聽聽
virtual
聽
void
聽Say() 聽聽聽聽
{ 聽聽聽聽聽聽聽聽std::cout聽
<<
聽
"
Vector<void*>::Hello
"
聽
<<
聽std::endl; 聽聽聽聽}
}
;
//
聽鐗逛緥鍖?/span>
template
<
typename聽T
>
class
聽Vector
<
T
*>
聽:聽
public
聽Vector
<
void
*>
{ }
;
int
聽_tmain(
int
聽argc,聽_TCHAR
*
聽argv[])
{ 聽聽聽聽Vector
<
int
*>
聽聽聽聽pIntVec; 聽聽聽聽pIntVec.Say(); 聽聽聽聽Vector
<
double
*>
聽聽聽聽pDoubleVec; 聽聽聽聽pDoubleVec.Say(); 聽聽聽聽
return
聽
0
; }
杈撳嚭: Vector<void*>::Hello Vector<void*>::Hello 浠庤繖閲?鎴戜滑鍙互鐪嬪嚭紼嬪簭鍦ㄨ繍琛岃繃紼嬩腑鍏ㄩ儴浣跨敤Vector<void*>鐨勭増鏈?class Vector<T*>妯℃澘渚挎槸鍏抽敭鐨勭幆鑺?緙栬瘧鍣ㄥ湪緙栬瘧榪囩▼涓?鐢變簬class Vector<T*>姣攃lass Vector鏇寸壒渚嬪寲,鎵浠ラ亣鍒癡ector<int*>鍜孷ector<double*>鏃墮兘閫夋嫨class Vector<T*>,鑰宑lass Vector<T*>緇ф壙Vector<void*>,涓涓洿鍔犵壒渚嬪寲鐗堟湰,鎵浠ョ紪璇戝櫒涓嶅啀浜х敓鏂扮殑妯℃澘鑰岄噰鐢╒ector<void*>榪欎釜鏈鐗逛緥鍖栫増鏈?榪欐牱鎵鏈夋寚閽堟ā鏉塊兘褰掔粨鍒癡ector<void*>,鑰宑lass Vector<T*>涓虹敤鎴鋒彁渚涗簡涓涓簿緹庤屼笖瀹夊叏鐨勭晫闈?鑰孷ector<void*>浣滀負搴曞眰瀹炵幇緇嗚妭琚殣钘?
浠ヤ笂浠g爜鍦╒C 7.1(VS2003)涓紪璇戦氳繃,鐢變簬VC6瀵規ā鏉挎敮鎸佷笉濂?鎵浠ユā鏉跨殑楂樼駭鐢ㄦ硶涓鑸笉瑕佸湪VC6涓嬌鐢? 涓嬭澆婕旂ず浠g爜
]]>
国产2021久久精品 |
无码8090精品久久一区 |
久久精品一区二区国产 |
丰满少妇高潮惨叫久久久 |
色综合久久最新中文字幕 |
久久久高清免费视频 |
亚洲AV无码成人网站久久精品大 |
久久棈精品久久久久久噜噜 |
久久不射电影网 |
亚洲av日韩精品久久久久久a |
久久夜色精品国产亚洲 |
精品一二三区久久aaa片 |
久久精品国产一区 |
天天爽天天狠久久久综合麻豆 |
99久久99久久精品国产片果冻 |
亚洲va久久久噜噜噜久久男同
|
丁香狠狠色婷婷久久综合 |
久久99久久成人免费播放 |
久久久久人妻精品一区 |
一本久久综合亚洲鲁鲁五月天 |
91久久精一区二区三区大全 |
久久国产欧美日韩精品免费 |
国产亚洲美女精品久久久 |
狠狠色丁香久久婷婷综合五月 |
yy6080久久 |
中文字幕精品无码久久久久久3D日动漫
|
久久午夜免费视频 |
久久久久女教师免费一区 |
久久美女网站免费 |
久久免费精品视频 |
AV狠狠色丁香婷婷综合久久
|
久久这里只有精品首页 |
久久精品国产一区二区三区 |
久久久久中文字幕 |
91精品国产91久久久久久蜜臀 |
精品久久久久久久 |
91精品婷婷国产综合久久 |
99久久综合狠狠综合久久 |
国产精品xxxx国产喷水亚洲国产精品无码久久一区
|
精品国产日韩久久亚洲 |
亚洲国产天堂久久综合 |