锘??xml version="1.0" encoding="utf-8" standalone="yes"?>夜夜爽av福利精品导航,国产精品久久久久久影视,久久亚洲高清http://m.shnenglu.com/mumutou/archive/2007/01/16/17682.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Tue, 16 Jan 2007 05:24:00 GMThttp://m.shnenglu.com/mumutou/archive/2007/01/16/17682.htmlhttp://m.shnenglu.com/mumutou/comments/17682.htmlhttp://m.shnenglu.com/mumutou/archive/2007/01/16/17682.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/17682.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/17682.html C++椋庢牸鐨勭被鍨嬭漿鎹㈢殑鐢ㄦ硶

榪欐槸More Effecitve C++閲岀殑絎簩鏉″綾誨瀷杞崲璁茬殑寰堝ソ錛屼篃寰堝熀紜濂芥噦銆?br />Item M2錛氬敖閲忎嬌鐢–++椋庢牸鐨勭被鍨嬭漿鎹?br />浠旂粏鎯蟲兂鍦頒綅鍗戣幢鐨勭被鍨嬭漿鎹㈠姛鑳斤紙cast錛夛紝鍏跺湪紼嬪簭璁捐涓殑鍦頒綅灝辮薄goto璇彞涓鏍蜂護浜洪剻瑙嗐備絾鏄畠榪樹笉鏄棤娉曚護浜哄繊鍙楋紝鍥犱負褰撳湪鏌愪簺绱ц鐨勫叧澶達紝綾誨瀷杞崲榪樻槸蹇呴渶鐨勶紝榪欐椂瀹冩槸涓涓繀闇鍝併?br />涓嶈繃C椋庢牸鐨勭被鍨嬭漿鎹㈠茍涓嶄唬琛ㄦ墍鏈夌殑綾誨瀷杞崲鍔熻兘銆?br />涓鏉ュ畠浠繃浜庣矖椴侊紝鑳藉厑璁鎬綘鍦ㄤ換浣曠被鍨嬩箣闂磋繘琛岃漿鎹€備笉榪囧鏋滆榪涜鏇寸簿紜殑綾誨瀷杞崲錛岃繖浼氭槸涓涓紭鐐廣傚湪榪欎簺綾誨瀷杞崲涓瓨鍦ㄧ潃宸ㄥぇ鐨勪笉鍚岋紝渚嬪鎶婁竴涓寚鍚?const瀵硅薄鐨勬寚閽堬紙pointer-to-const-object錛夎漿鎹㈡垚鎸囧悜闈瀋onst瀵硅薄鐨勬寚閽堬紙pointer-to-non-const -object錛?鍗充竴涓粎浠呭幓闄onst鐨勭被鍨嬭漿鎹?錛屾妸涓涓寚鍚戝熀綾葷殑鎸囬拡杞崲鎴愭寚鍚戝瓙綾葷殑鎸囬拡錛堝嵆瀹屽叏鏀瑰彉瀵硅薄綾誨瀷錛夈備紶緇熺殑C椋庢牸鐨勭被鍨嬭漿鎹笉瀵逛笂榪頒袱縐嶈漿鎹㈣繘琛屽尯鍒嗐傦紙榪欎竴鐐逛篃涓嶄護浜烘儕璁訛紝鍥犱負C椋庢牸鐨勭被鍨嬭漿鎹㈡槸涓篊璇█璁捐鐨勶紝鑰屼笉鏄負C++璇█璁捐鐨勶級銆?br />浜屾潵C椋庢牸鐨勭被鍨嬭漿鎹㈠湪紼嬪簭璇彞涓毦浠ヨ瘑鍒傚湪璇硶涓婏紝綾誨瀷杞崲鐢卞渾鎷彿鍜屾爣璇嗙緇勬垚錛岃岃繖浜涘彲浠ョ敤鍦–錛嬶紜涓殑浠諱綍鍦版柟銆傝繖浣垮緱鍥炵瓟璞¤繖鏍蜂竴涓渶鍩烘湰鐨勬湁鍏崇被鍨嬭漿鎹㈢殑闂鍙樺緱寰堝洶闅撅細鈥滃湪榪欎釜紼嬪簭涓槸鍚︿嬌鐢ㄤ簡綾誨瀷杞崲錛熲濄傝繖鏄洜涓轟漢宸ラ槄璇誨緢鍙兘蹇界暐浜嗙被鍨嬭漿鎹㈢殑璇彞錛岃屽埄鐢ㄨ薄grep鐨勫伐鍏風▼搴忎篃涓嶈兘浠庤鍙ユ瀯鎴愪笂鍖哄垎鍑哄畠浠潵銆?br />C++閫氳繃寮曡繘鍥涗釜鏂扮殑綾誨瀷杞崲鎿嶄綔絎﹀厠鏈嶄簡C椋庢牸綾誨瀷杞崲鐨勭己鐐癸紝榪欏洓涓搷浣滅鏄? static_cast, const_cast, dynamic_cast, 鍜宺einterpret_cast銆傚湪澶у鏁版儏鍐典笅錛屽浜庤繖浜涙搷浣滅浣犲彧闇瑕佺煡閬撳師鏉ヤ綘涔犳儻浜庤繖鏍峰啓錛?br />(type) expression
鑰岀幇鍦ㄤ綘鎬誨簲璇ヨ繖鏍峰啓錛?br />static_cast<type>(expression)
渚嬪錛屽亣璁句綘鎯蟲妸涓涓猧nt杞崲鎴恉ouble錛屼互渚胯鍖呭惈int綾誨瀷鍙橀噺鐨勮〃杈懼紡浜х敓鍑烘誕鐐規暟鍊肩殑緇撴灉銆傚鏋滅敤C椋庢牸鐨勭被鍨嬭漿鎹紝浣犺兘榪欐牱鍐欙細
int firstNumber, secondNumber;
...
double result = ((double)firstNumber)/secondNumber錛?br />濡傛灉鐢ㄤ笂榪版柊鐨勭被鍨嬭漿鎹㈡柟娉曪紝浣犲簲璇ヨ繖鏍峰啓錛?br />double result = static_cast<double>(firstNumber)/secondNumber;
榪欐牱鐨勭被鍨嬭漿鎹笉璁烘槸瀵逛漢宸ヨ繕鏄紼嬪簭閮藉緢瀹規槗璇嗗埆銆?br />static_cast 鍦ㄥ姛鑳戒笂鍩烘湰涓婁笌C椋庢牸鐨勭被鍨嬭漿鎹竴鏍峰己澶э紝鍚箟涔熶竴鏍楓傚畠涔熸湁鍔熻兘涓婇檺鍒躲備緥濡傦紝浣犱笉鑳界敤static_cast璞$敤C椋庢牸鐨勭被鍨嬭漿鎹竴鏍鋒妸 struct杞崲鎴恑nt綾誨瀷鎴栬呮妸double綾誨瀷杞崲鎴愭寚閽堢被鍨嬶紝鍙﹀錛宻tatic_cast涓嶈兘浠庤〃杈懼紡涓幓闄onst灞炴э紝鍥犱負鍙︿竴涓柊鐨勭被鍨嬭漿鎹㈡搷浣滅const_cast鏈夎繖鏍風殑鍔熻兘銆?br />鍏跺畠鏂扮殑C++綾誨瀷杞崲鎿嶄綔絎﹁鐢ㄥ湪闇瑕佹洿澶氶檺鍒剁殑鍦版柟銆俢onst_cast鐢ㄤ簬綾誨瀷杞崲鎺夎〃杈懼紡鐨刢onst鎴杤olatileness灞炴с傞氳繃浣跨敤const_cast錛屼綘鍚戜漢浠拰緙栬瘧鍣ㄥ己璋冧綘閫氳繃綾誨瀷杞崲鎯沖仛鐨勫彧鏄敼鍙樹竴浜涗笢瑗跨殑 constness鎴栬卾olatileness灞炴с傝繖涓惈涔夎緙栬瘧鍣ㄦ墍綰︽潫銆傚鏋滀綘璇曞浘浣跨敤const_cast鏉ュ畬鎴愪慨鏀筩onstness 鎴栬卾olatileness灞炴т箣澶栫殑浜嬫儏錛屼綘鐨勭被鍨嬭漿鎹㈠皢琚嫆緇濄備笅闈㈡槸涓浜涗緥瀛愶細
class Widget { ... };
class SpecialWidget: public Widget { ... };
void update(SpecialWidget *psw);
SpecialWidget sw; // sw 鏄竴涓潪const 瀵硅薄銆?br />const SpecialWidget& csw = sw; // csw 鏄痵w鐨勪竴涓紩鐢?br />// 瀹冩槸涓涓猚onst 瀵硅薄
update(&csw); // 閿欒!涓嶈兘浼犻掍竴涓猚onst SpecialWidget* 鍙橀噺
// 緇欎竴涓鐞哠pecialWidget*綾誨瀷鍙橀噺鐨勫嚱鏁?br />update(const_cast<SpecialWidget*>(&csw));
// 姝g‘錛宑sw鐨刢onst琚樉紺哄湴杞崲鎺夛紙
// csw鍜宻w涓や釜鍙橀噺鍊煎湪update
//鍑芥暟涓兘琚洿鏂幫級
update((SpecialWidget*)&csw);
// 鍚屼笂錛屼絾鐢ㄤ簡涓涓洿闅捐瘑鍒?br />//鐨凜椋庢牸鐨勭被鍨嬭漿鎹?br />Widget *pw = new SpecialWidget;
update(pw); // 閿欒錛乸w鐨勭被鍨嬫槸Widget*錛屼絾鏄?br />// update鍑芥暟澶勭悊鐨勬槸SpecialWidget*綾誨瀷
update(const_cast<SpecialWidget*>(pw));
// 閿欒錛乧onst_cast浠呰兘琚敤鍦ㄥ獎鍝?br />// constness or volatileness鐨勫湴鏂逛笂銆?
// 涓嶈兘鐢ㄥ湪鍚戠戶鎵垮瓙綾昏繘琛岀被鍨嬭漿鎹€?br />鍒扮洰鍓嶄負姝紝const_cast鏈鏅氱殑鐢ㄩ斿氨鏄漿鎹㈡帀瀵硅薄鐨刢onst灞炴с?br />絎簩縐嶇壒孌婄殑綾誨瀷杞崲絎︽槸dynamic_cast錛屽畠琚敤浜庡畨鍏ㄥ湴娌跨潃綾葷殑緇ф壙鍏崇郴鍚戜笅榪涜綾誨瀷杞崲銆傝繖灝辨槸璇達紝浣犺兘鐢╠ynamic_cast鎶婃寚鍚戝熀綾葷殑鎸囬拡鎴栧紩鐢ㄨ漿鎹㈡垚鎸囧悜鍏舵淳鐢熺被鎴栧叾鍏勫紵綾葷殑鎸囬拡鎴栧紩鐢紝鑰屼笖浣犺兘鐭ラ亾杞崲鏄惁鎴愬姛銆傚け璐ョ殑杞崲灝嗚繑鍥炵┖鎸囬拡錛堝綋瀵規寚閽堣繘琛岀被鍨嬭漿鎹㈡椂錛夋垨鑰呮姏鍑哄紓甯革紙褰撳寮曠敤榪涜綾誨瀷杞崲鏃訛級錛?br />Widget *pw;
...
update(dynamic_cast<SpecialWidget*>(pw));
// 姝g‘錛屼紶閫掔粰update鍑芥暟涓涓寚閽?br />// 鏄寚鍚戝彉閲忕被鍨嬩負SpecialWidget鐨刾w鐨勬寚閽?br />// 濡傛灉pw紜疄鎸囧悜涓涓璞?
// 鍚﹀垯浼犻掕繃鍘葷殑灝嗕嬌絀烘寚閽堛?br />void updateViaRef(SpecialWidget& rsw);
updateViaRef(dynamic_cast<SpecialWidget&>(*pw));
//姝g‘銆備紶閫掔粰updateViaRef鍑芥暟
// SpecialWidget pw 鎸囬拡錛屽鏋減w
// 紜疄鎸囧悜浜嗘煇涓璞?br />// 鍚﹀垯灝嗘姏鍑哄紓甯?br />dynamic_casts鍦ㄥ府鍔╀綘嫻忚緇ф壙灞傛涓婃槸鏈夐檺鍒剁殑銆傚畠涓嶈兘琚敤浜庣己涔忚櫄鍑芥暟鐨勭被鍨嬩笂錛堝弬瑙佹潯嬈綧24錛夛紝涔熶笉鑳界敤瀹冩潵杞崲鎺塩onstness錛?br />int firstNumber, secondNumber;
...
double result = dynamic_cast<double>(firstNumber)/secondNumber;
// 閿欒錛佹病鏈夌戶鎵垮叧緋?br />const SpecialWidget sw;
...
update(dynamic_cast<SpecialWidget*>(&sw));
// 閿欒! dynamic_cast涓嶈兘杞崲
// 鎺塩onst銆?br />濡備綘鎯沖湪娌℃湁緇ф壙鍏崇郴鐨勭被鍨嬩腑榪涜杞崲錛屼綘鍙兘鎯沖埌static_cast銆傚鏋滄槸涓轟簡鍘婚櫎const錛屼綘鎬誨緱鐢╟onst_cast銆?br />榪欏洓涓被鍨嬭漿鎹㈢涓殑鏈鍚庝竴涓槸reinterpret_cast銆備嬌鐢ㄨ繖涓搷浣滅鐨勭被鍨嬭漿鎹紝鍏剁殑杞崲緇撴灉鍑犱箮閮芥槸鎵ц鏈熷畾涔夛紙implementation-defined錛夈傚洜姝わ紝浣跨敤reinterpret_casts鐨勪唬鐮佸緢闅劇Щ妞嶃?br />reinterpret_casts鐨勬渶鏅氱殑鐢ㄩ斿氨鏄湪鍑芥暟鎸囬拡綾誨瀷涔嬮棿榪涜杞崲銆備緥濡傦紝鍋囪浣犳湁涓涓嚱鏁版寚閽堟暟緇勶細
typedef void (*FuncPtr)(); // FuncPtr is 涓涓寚鍚戝嚱鏁?br />// 鐨勬寚閽堬紝璇ュ嚱鏁版病鏈夊弬鏁?br />// 榪斿洖鍊肩被鍨嬩負void
FuncPtr funcPtrArray[10]; // funcPtrArray 鏄竴涓兘瀹圭撼
// 10涓狥uncPtrs鎸囬拡鐨勬暟緇?br />璁╂垜浠亣璁句綘甯屾湜錛堝洜涓烘煇浜涜帿鍚嶅叾濡欑殑鍘熷洜錛夋妸涓涓寚鍚戜笅闈㈠嚱鏁扮殑鎸囬拡瀛樺叆funcPtrArray鏁扮粍錛?br />int doSomething();
浣犱笉鑳戒笉緇忚繃綾誨瀷杞崲鑰岀洿鎺ュ幓鍋氾紝鍥犱負doSomething鍑芥暟瀵逛簬funcPtrArray鏁扮粍鏉ヨ鏈変竴涓敊璇殑綾誨瀷銆傚湪FuncPtrArray鏁扮粍閲岀殑鍑芥暟榪斿洖鍊兼槸void綾誨瀷錛岃宒oSomething鍑芥暟榪斿洖鍊兼槸int綾誨瀷銆?br />funcPtrArray[0] = &doSomething; // 閿欒錛佺被鍨嬩笉鍖歸厤
reinterpret_cast鍙互璁╀綘榪嬌緙栬瘧鍣ㄤ互浣犵殑鏂規硶鍘葷湅寰呭畠浠細
funcPtrArray[0] = // this compiles
reinterpret_cast<FuncPtr>(&doSomething);
杞崲鍑芥暟鎸囬拡鐨勪唬鐮佹槸涓嶅彲縐繪鐨勶紙C++涓嶄繚璇佹墍鏈夌殑鍑芥暟鎸囬拡閮借鐢ㄤ竴鏍風殑鏂規硶琛ㄧず錛夛紝鍦ㄤ竴浜涙儏鍐典笅榪欐牱鐨勮漿鎹細浜х敓涓嶆紜殑緇撴灉錛堝弬瑙佹潯嬈綧31錛夛紝鎵浠ヤ綘搴旇閬垮厤杞崲鍑芥暟鎸囬拡綾誨瀷錛岄櫎闈炰綘澶勪簬鐫鑳屾按涓鎴樺拰灝栧垁鏋跺枆鐨勫嵄鎬ユ椂鍒匯備竴鎶婇攱鍒╃殑鍒銆備竴鎶婇潪甯擱攱鍒╃殑鍒銆?br />濡傛灉浣犱嬌鐢ㄧ殑緙栬瘧鍣ㄧ己涔忓鏂扮殑綾誨瀷杞崲鏂瑰紡鐨勬敮鎸侊紝浣犲彲浠ョ敤浼犵粺鐨勭被鍨嬭漿鎹㈡柟娉曚唬鏇縮tatic_cast, const_cast, 浠ュ強reinterpret_cast銆備篃鍙互鐢ㄤ笅闈㈢殑瀹忔浛鎹㈡潵妯℃嫙鏂扮殑綾誨瀷杞崲璇硶錛?br />#define static_cast(TYPE,EXPR) ((TYPE)(EXPR))
#define const_cast(TYPE,EXPR) ((TYPE)(EXPR))
#define reinterpret_cast(TYPE,EXPR) ((TYPE)(EXPR))
浣犲彲浠ヨ薄榪欐牱浣跨敤浣跨敤錛?br />double result = static_cast(double, firstNumber)/secondNumber;
update(const_cast(SpecialWidget*, &sw));
funcPtrArray[0] = reinterpret_cast(FuncPtr, &doSomething);
榪欎簺妯℃嫙涓嶄細璞$湡瀹炵殑鎿嶄綔絎︿竴鏍峰畨鍏紝浣嗘槸褰撲綘鐨勭紪璇戝櫒鍙互鏀寔鏂扮殑鐨勭被鍨嬭漿鎹㈡椂錛屽畠浠彲浠ョ畝鍖栦綘鎶婁唬鐮佸崌綰х殑榪囩▼銆?br />娌℃湁涓涓鏄撶殑鏂規硶鏉ユā鎷焏ynamic_cast鐨勬搷浣滐紝浣嗘槸寰堝鍑芥暟搴撴彁渚涗簡鍑芥暟錛屽畨鍏ㄥ湴鍦ㄦ淳鐢熺被涓庡熀綾諱箣闂磋繘琛岀被鍨嬭漿鎹€傚鏋滀綘娌℃湁榪欎簺鍑芥暟鑰屼綘鏈夊繀欏昏繘琛岃繖鏍風殑綾誨瀷杞崲錛屼綘涔熷彲浠ュ洖鍒癈椋庢牸鐨勭被鍨嬭漿鎹㈡柟娉曚笂錛屼絾鏄繖鏍風殑璇濅綘灝嗕笉鑳借幏鐭ョ被鍨嬭漿鎹㈡槸鍚﹀け璐ャ傚綋鐒訛紝浣犱篃鍙互瀹氫箟涓涓畯鏉ユā鎷?dynamic_cast鐨勫姛鑳斤紝灝辮薄妯℃嫙鍏跺畠鐨勭被鍨嬭漿鎹竴鏍鳳細
#define dynamic_cast(TYPE,EXPR) (TYPE)(EXPR)
璇瘋浣忥紝榪欎釜妯℃嫙騫朵笉鑳藉畬鍏ㄥ疄鐜癲ynamic_cast鐨勫姛鑳斤紝瀹冩病鏈夊姙娉曠煡閬撹漿鎹㈡槸鍚﹀け璐ャ?br />鎴戠煡閬擄紝鏄殑錛屾垜鐭ラ亾錛屾柊鐨勭被鍨嬭漿鎹㈡搷浣滅涓嶆槸寰堢編瑙傝屼笖鐢ㄩ敭鐩橀敭鍏ヤ篃寰堥夯鐑︺傚鏋滀綘鍙戠幇瀹冧滑鐪嬩笂鍘誨疄鍦ㄤ護浜鴻鍘岋紝C椋庢牸鐨勭被鍨嬭漿鎹㈣繕鍙互緇х畫浣跨敤騫朵笖鍚堟硶銆傜劧鑰岋紝姝f槸鍥犱負鏂扮殑綾誨瀷杞崲絎︾己涔忕編鎰熸墠鑳戒嬌瀹冨譏琛ヤ簡鍦ㄥ惈涔夌簿紜у拰鍙鯨璁ゆт笂鐨勭己鐐廣傚茍涓旓紝浣跨敤鏂扮被鍨嬭漿鎹㈢鐨勭▼搴忔洿瀹規槗琚В鏋愶紙涓嶈鏄浜哄伐榪樻槸瀵逛簬宸ュ叿紼嬪簭錛夛紝瀹冧滑鍏佽緙栬瘧鍣ㄦ嫻嬪嚭鍘熸潵涓嶈兘鍙戠幇鐨勯敊璇傝繖浜涢兘鏄斁寮僀椋庢牸綾誨瀷杞崲鏂規硶鐨勫己鏈夊姏鐨勭悊鐢便傝繕鏈夌涓変釜鐞嗙敱錛氫篃璁歌綾誨瀷杞崲絎︿笉緹庤鍜岄敭鍏ラ夯鐑︽槸涓浠跺ソ浜嬨?



]]>
C++闅忕瑪 涔?explicit 鍏抽敭瀛?杞澆)http://m.shnenglu.com/mumutou/archive/2007/01/16/17681.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Tue, 16 Jan 2007 05:21:00 GMThttp://m.shnenglu.com/mumutou/archive/2007/01/16/17681.htmlhttp://m.shnenglu.com/mumutou/comments/17681.htmlhttp://m.shnenglu.com/mumutou/archive/2007/01/16/17681.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/17681.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/17681.htmlexplicit鍏抽敭瀛楃敤浜庡彇娑堟瀯閫犲嚱鏁扮殑闅愬紡杞崲錛屽鏈夊涓弬鏁扮殑鏋勯犲嚱鏁頒嬌鐢╡xplicit鏄釜璇硶閿欒銆?br />


In C++ it is possible to declare constructors for a class, taking a single parameter, and use those constructors for doing type conversion. For example:

				
class 聽A聽{
public
:
聽聽聽聽聽聽聽 A(
int
);
};

void
聽f(A)聽{}
void
聽g()
{
聽聽聽聽聽聽聽聽 A聽a1聽
= 37
;
聽聽聽聽聽聽聽聽 A聽a2聽
= 聽A( 47
);
聽聽聽聽聽聽聽聽 A聽a3(
57
);
聽聽聽聽聽聽聽聽 a1聽
= 67
;
聽聽聽聽聽聽聽聽 f(
77
);
}

A declaration like:
聽A a1 = 37;
says to call the A(int) constructor to create an A object from the integer value. Such a constructor is called a "converting constructor".

However, this type of implicit conversion can be confusing, and there is a way of disabling it, using a new keyword "explicit" in the constructor declaration:

				
class 聽A聽{
public
:
聽聽聽聽聽聽聽
explicit 聽A( int
);
};

void
聽f(A)聽{}
void
聽g()
{
聽聽聽聽聽聽聽聽聽 A聽a1聽
= 37 ;聽聽聽聽聽聽 // 聽illegal

聽聽聽聽聽聽聽聽聽 A聽a2聽 = 聽A( 47 );聽聽聽 // 聽OK
聽聽聽聽聽聽聽聽聽 A聽a3( 57 );聽聽聽聽聽聽聽 // 聽OK
聽聽聽聽聽聽聽聽聽 a1聽 = 67 ;聽聽聽聽聽聽聽聽 // 聽illegal
聽聽聽聽聽聽聽聽聽 f( 77 );聽聽聽聽聽聽聽聽聽聽 // 聽illegal
}


Using the explicit keyword, a constructor is declared to be
"nonconverting", and explicit constructor syntax is required:

				
class 聽A聽{
public
:
聽聽聽聽聽聽聽聽
explicit 聽A( int
);
聽聽聽聽聽聽聽聽};

void
聽f(A)聽{}

void
聽g()
{
聽聽聽聽聽聽聽聽A聽a1聽
= 聽A( 37
);
聽聽聽聽聽聽聽聽A聽a2聽
= 聽A( 47
);
聽聽聽聽聽聽聽聽A聽a3(
57
);
聽聽聽聽聽聽聽聽a1聽
= 聽A( 67
);
聽聽聽聽聽聽聽聽f(A(
77
));
}


Note that an expression such as:

				        A(47)

is closely related to function-style casts supported by C++. For example:

				        double d = 12.34;

int i = int(d);


]]>
C++闅忕瑪 涔?鏂囦歡鎿嶄綔(杞澆)http://m.shnenglu.com/mumutou/archive/2007/01/16/17680.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Tue, 16 Jan 2007 05:18:00 GMThttp://m.shnenglu.com/mumutou/archive/2007/01/16/17680.htmlhttp://m.shnenglu.com/mumutou/comments/17680.htmlhttp://m.shnenglu.com/mumutou/archive/2007/01/16/17680.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/17680.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/17680.html C++鏂囦歡鎿嶄綔 聽鍘熸枃鍦板潃錛歨ttp://www.layz.net/blog/user1/xuanxuan/archives/2006/67.html
聽鍦–++涓紝鏈変竴涓猻tream榪欎釜綾伙紝鎵鏈夌殑I/O閮戒互榪欎釜鈥滄祦鈥濈被涓哄熀紜鐨勶紝鍖呮嫭鎴戜滑瑕佽璇嗙殑鏂囦歡I/O錛宻tream榪欎釜綾繪湁涓や釜閲嶈鐨勮繍綆楃錛?

1銆佹彃鍏ュ櫒(<<)
銆銆鍚戞祦杈撳嚭鏁版嵁銆傛瘮濡傝緋葷粺鏈変竴涓粯璁ょ殑鏍囧噯杈撳嚭嫻?cout)錛屼竴鑸儏鍐典笅灝辨槸鎸囩殑鏄劇ず鍣紝鎵浠ワ紝cout<<"Write Stdout"<<'\n';灝辮〃紺烘妸瀛楃涓?Write Stdout"鍜屾崲琛屽瓧絎?'\n')杈撳嚭鍒版爣鍑嗚緭鍑烘祦銆?

2銆佹瀽鍙栧櫒(>>)
銆銆浠庢祦涓緭鍏ユ暟鎹傛瘮濡傝緋葷粺鏈変竴涓粯璁ょ殑鏍囧噯杈撳叆嫻?cin)錛屼竴鑸儏鍐典笅灝辨槸鎸囩殑閿洏錛屾墍浠ワ紝cin>>x;灝辮〃紺轟粠鏍囧噯杈撳叆嫻佷腑璇誨彇涓涓寚瀹氱被鍨?鍗沖彉閲弜鐨勭被鍨?鐨勬暟鎹?

銆銆鍦–++涓紝瀵規枃浠剁殑鎿嶄綔鏄氳繃stream鐨勫瓙綾籪stream(file stream)鏉ュ疄鐜扮殑錛屾墍浠ワ紝瑕佺敤榪欑鏂瑰紡鎿嶄綔鏂囦歡錛屽氨蹇呴』鍔犲叆澶存枃浠秄stream.h銆備笅闈㈠氨鎶婃綾葷殑鏂囦歡鎿嶄綔榪囩▼涓涓閬撴潵銆?

涓銆佹墦寮鏂囦歡
銆銆鍦╢stream綾諱腑錛屾湁涓涓垚鍛樺嚱鏁皁pen()錛屽氨鏄敤鏉ユ墦寮鏂囦歡鐨勶紝鍏跺師鍨嬫槸錛?

void open(const char* filename,int mode,int access);

鍙傛暟錛?

filename錛氥銆瑕佹墦寮鐨勬枃浠跺悕
mode錛氥銆銆銆瑕佹墦寮鏂囦歡鐨勬柟寮?
access錛氥銆銆鎵撳紑鏂囦歡鐨勫睘鎬?
鎵撳紑鏂囦歡鐨勬柟寮忓湪綾籭os(鏄墍鏈夋祦寮廔/O綾葷殑鍩虹被)涓畾涔夛紝甯哥敤鐨勫煎涓嬶細

ios::app錛氥銆銆浠ヨ拷鍔犵殑鏂瑰紡鎵撳紑鏂囦歡
ios::ate錛氥銆銆鏂囦歡鎵撳紑鍚庡畾浣嶅埌鏂囦歡灝撅紝ios:app灝卞寘鍚湁姝ゅ睘鎬?
ios::binary錛?銆浠ヤ簩榪涘埗鏂瑰紡鎵撳紑鏂囦歡錛岀己鐪佺殑鏂瑰紡鏄枃鏈柟寮忋備袱縐嶆柟寮忕殑鍖哄埆瑙佸墠鏂?
ios::in錛氥銆銆 鏂囦歡浠ヨ緭鍏ユ柟寮忔墦寮
ios::out錛氥銆銆鏂囦歡浠ヨ緭鍑烘柟寮忔墦寮
ios::nocreate錛?涓嶅緩绔嬫枃浠訛紝鎵浠ユ枃浠朵笉瀛樺湪鏃舵墦寮澶辮觸銆
ios::noreplace錛氫笉瑕嗙洊鏂囦歡錛屾墍浠ユ墦寮鏂囦歡鏃跺鏋滄枃浠跺瓨鍦ㄥけ璐?
ios::trunc錛氥銆濡傛灉鏂囦歡瀛樺湪錛屾妸鏂囦歡闀垮害璁句負0
銆銆鍙互鐢ㄢ滄垨鈥濇妸浠ヤ笂灞炴ц繛鎺ヨ搗鏉ワ紝濡俰os::out|ios::binary

銆銆鎵撳紑鏂囦歡鐨勫睘鎬у彇鍊兼槸錛?

0錛氭櫘閫氭枃浠訛紝鎵撳紑璁塊棶
1錛氬彧璇繪枃浠?
2錛氶殣鍚枃浠?
4錛氱郴緇熸枃浠?
銆銆鍙互鐢ㄢ滄垨鈥濇垨鑰呪?鈥濇妸浠ヤ笂灞炴ц繛鎺ヨ搗鏉?錛屽3鎴?|2灝辨槸浠ュ彧璇誨拰闅愬惈灞炴ф墦寮鏂囦歡銆?

銆銆渚嬪錛氫互浜岃繘鍒惰緭鍏ユ柟寮忔墦寮鏂囦歡c:\config.sys

銆銆fstream file1;
銆銆file1.open("c:\\config.sys",ios::binary|ios::in,0);

銆銆濡傛灉open鍑芥暟鍙湁鏂囦歡鍚嶄竴涓弬鏁幫紝鍒欐槸浠ヨ/鍐欐櫘閫氭枃浠舵墦寮錛屽嵆錛?

銆銆file1.open("c:\\config.sys");<=>file1.open("c:\\config.sys",ios::in|ios::out,0);

銆銆鍙﹀錛宖stream榪樻湁鍜宱pen()涓鏍風殑鏋勯犲嚱鏁幫紝瀵逛簬涓婁緥錛屽湪瀹氫箟鐨勬椂渚氨鍙互鎵撳紑鏂囦歡浜嗭細

銆銆fstream file1("c:\\config.sys");

銆銆鐗瑰埆鎻愬嚭鐨勬槸錛宖stream鏈変袱涓瓙綾伙細ifstream(input file stream)鍜宱fstream(outpu file stream)錛宨fstream榛樿浠ヨ緭鍏ユ柟寮忔墦寮鏂囦歡錛岃宱fstream榛樿浠ヨ緭鍑烘柟寮忔墦寮鏂囦歡銆?

銆銆ifstream file2("c:\\pdos.def");//浠ヨ緭鍏ユ柟寮忔墦寮鏂囦歡
銆銆ofstream file3("c:\\x.123");//浠ヨ緭鍑烘柟寮忔墦寮鏂囦歡

銆銆鎵浠ワ紝鍦ㄥ疄闄呭簲鐢ㄤ腑錛屾牴鎹渶瑕佺殑涓嶅悓錛岄夋嫨涓嶅悓鐨勭被鏉ュ畾涔夛細濡傛灉鎯充互杈撳叆鏂瑰紡鎵撳紑錛屽氨鐢╥fstream鏉ュ畾涔夛紱濡傛灉鎯充互杈撳嚭鏂瑰紡鎵撳紑錛屽氨鐢╫fstream鏉ュ畾涔夛紱濡傛灉鎯充互杈撳叆/杈撳嚭鏂瑰紡鏉ユ墦寮錛屽氨鐢╢stream鏉ュ畾涔夈?

浜屻佸叧闂枃浠?
銆銆鎵撳紑鐨勬枃浠朵嬌鐢ㄥ畬鎴愬悗涓瀹氳鍏抽棴錛宖stream鎻愪緵浜嗘垚鍛樺嚱鏁癱lose()鏉ュ畬鎴愭鎿嶄綔錛屽錛歠ile1.close();灝辨妸file1鐩歌繛鐨勬枃浠跺叧闂?

涓夈佽鍐欐枃浠?
銆銆璇誨啓鏂囦歡鍒嗕負鏂囨湰鏂囦歡鍜屼簩榪涘埗鏂囦歡鐨勮鍙栵紝瀵逛簬鏂囨湰鏂囦歡鐨勮鍙栨瘮杈冪畝鍗曪紝鐢ㄦ彃鍏ュ櫒鍜屾瀽鍙栧櫒灝卞彲浠ヤ簡錛涜屽浜庝簩榪涘埗鐨勮鍙栧氨瑕佸鏉備簺錛屼笅瑕佸氨璇︾粏鐨勪粙緇嶈繖涓ょ鏂瑰紡

銆銆1銆佹枃鏈枃浠剁殑璇誨啓
銆銆鏂囨湰鏂囦歡鐨勮鍐欏緢綆鍗曪細鐢ㄦ彃鍏ュ櫒(<<)鍚戞枃浠惰緭鍑猴紱鐢ㄦ瀽鍙栧櫒(>>)浠庢枃浠惰緭鍏ャ傚亣璁緁ile1鏄互杈撳叆鏂瑰紡鎵撳紑錛宖ile2浠ヨ緭鍑烘墦寮銆傜ず渚嬪涓嬶細

銆銆file2<<"I Love You";//鍚戞枃浠跺啓鍏ュ瓧絎︿覆"I Love You"
銆銆int i;
銆銆file1>>i;//浠庢枃浠惰緭鍏ヤ竴涓暣鏁板箋?

銆銆榪欑鏂瑰紡榪樻湁涓縐嶇畝鍗曠殑鏍煎紡鍖栬兘鍔涳紝姣斿鍙互鎸囧畾杈撳嚭涓?6榪涘埗絳夌瓑錛屽叿浣撶殑鏍煎紡鏈変互涓嬩竴浜?

鎿嶇旱絎?鍔熻兘 杈撳叆/杈撳嚭
dec 鏍煎紡鍖栦負鍗佽繘鍒舵暟鍊兼暟鎹?杈撳叆鍜岃緭鍑?
endl 杈撳嚭涓涓崲琛岀騫跺埛鏂版嫻?杈撳嚭
ends 杈撳嚭涓涓┖瀛楃 杈撳嚭
hex 鏍煎紡鍖栦負鍗佸叚榪涘埗鏁板兼暟鎹?杈撳叆鍜岃緭鍑?
oct 鏍煎紡鍖栦負鍏繘鍒舵暟鍊兼暟鎹?杈撳叆鍜岃緭鍑?
setpxecision(int p) 璁劇疆嫻偣鏁扮殑綺懼害浣嶆暟 杈撳嚭

銆銆姣斿瑕佹妸123褰撲綔鍗佸叚榪涘埗杈撳嚭錛歠ile1<<<123;瑕佹妸3.1415926浠?浣嶇簿搴﹁緭鍑猴細FILE1<<<3.1415926銆?

銆銆2銆佷簩榪涘埗鏂囦歡鐨勮鍐?
鈶爌ut()
銆銆put()鍑芥暟鍚戞祦鍐欏叆涓涓瓧絎︼紝鍏跺師鍨嬫槸ofstream &put(char ch)錛屼嬌鐢ㄤ篃姣旇緝綆鍗曪紝濡俧ile1.put('c');灝辨槸鍚戞祦鍐欎竴涓瓧絎?c'銆?

鈶et()
銆銆get()鍑芥暟姣旇緝鐏墊椿錛屾湁3縐嶅父鐢ㄧ殑閲嶈澆褰㈠紡錛?

銆銆涓縐嶅氨鏄拰put()瀵瑰簲鐨勫艦寮忥細ifstream &get(char &ch);鍔熻兘鏄粠嫻佷腑璇誨彇涓涓瓧絎︼紝緇撴灉淇濆瓨鍦ㄥ紩鐢╟h涓紝濡傛灉鍒版枃浠跺熬錛岃繑鍥炵┖瀛楃銆傚file2.get(x);琛ㄧず浠庢枃浠朵腑璇誨彇涓涓瓧絎︼紝騫舵妸璇誨彇鐨勫瓧絎︿繚瀛樺湪x涓?

銆銆鍙︿竴縐嶉噸杞藉艦寮忕殑鍘熷瀷鏄細 int get();榪欑褰㈠紡鏄粠嫻佷腑榪斿洖涓涓瓧絎︼紝濡傛灉鍒拌揪鏂囦歡灝撅紝榪斿洖EOF錛屽x=file2.get();鍜屼笂渚嬪姛鑳芥槸涓鏍風殑銆?

銆銆榪樻湁涓縐嶅艦寮忕殑鍘熷瀷鏄細ifstream &get(char *buf,int num,char delim='\n')錛涜繖縐嶅艦寮忔妸瀛楃璇誨叆鐢?buf 鎸囧悜鐨勬暟緇勶紝鐩村埌璇誨叆浜?num 涓瓧絎︽垨閬囧埌浜嗙敱 delim 鎸囧畾鐨勫瓧絎︼紝濡傛灉娌′嬌鐢?delim 榪欎釜鍙傛暟錛屽皢浣跨敤緙虹渷鍊兼崲琛岀'\n'銆備緥濡傦細

銆銆file2.get(str1,127,'A');//浠庢枃浠朵腑璇誨彇瀛楃鍒板瓧絎︿覆str1錛屽綋閬囧埌瀛楃'A'鎴栬鍙栦簡127涓瓧絎︽椂緇堟銆?

鈶㈣鍐欐暟鎹潡
銆銆瑕佽鍐欎簩榪涘埗鏁版嵁鍧楋紝浣跨敤鎴愬憳鍑芥暟read()鍜寃rite()鎴愬憳鍑芥暟錛屽畠浠師鍨嬪涓嬶細

銆銆銆銆read(unsigned char *buf,int num);
銆銆銆銆write(const unsigned char *buf,int num);

銆銆read()浠庢枃浠朵腑璇誨彇 num 涓瓧絎﹀埌 buf 鎸囧悜鐨勭紦瀛樹腑錛屽鏋滃湪榪樻湭璇誨叆 num 涓瓧絎︽椂灝卞埌浜嗘枃浠跺熬錛屽彲浠ョ敤鎴愬憳鍑芥暟 int gcount();鏉ュ彇寰楀疄闄呰鍙栫殑瀛楃鏁幫紱鑰?write() 浠巄uf 鎸囧悜鐨勭紦瀛樺啓 num 涓瓧絎﹀埌鏂囦歡涓紝鍊煎緱娉ㄦ剰鐨勬槸緙撳瓨鐨勭被鍨嬫槸 unsigned char *錛屾湁鏃跺彲鑳介渶瑕佺被鍨嬭漿鎹€?

渚嬶細

銆銆銆銆unsigned char str1[]="I Love You";
銆銆銆銆int n[5];
銆銆銆銆ifstream in("xxx.xxx");
銆銆銆銆ofstream out("yyy.yyy");
銆銆銆銆out.write(str1,strlen(str1));//鎶婂瓧絎︿覆str1鍏ㄩ儴鍐欏埌yyy.yyy涓?
銆銆銆銆in.read((unsigned char*)n,sizeof(n));//浠巟xx.xxx涓鍙栨寚瀹氫釜鏁存暟錛屾敞鎰忕被鍨嬭漿鎹?
銆銆銆銆in.close();out.close();

鍥涖佹嫻婨OF
銆銆鎴愬憳鍑芥暟eof()鐢ㄦ潵媯嫻嬫槸鍚﹀埌杈炬枃浠跺熬錛屽鏋滃埌杈炬枃浠跺熬榪斿洖闈?鍊鹼紝鍚﹀垯榪斿洖0銆傚師鍨嬫槸int eof();

渚嬶細銆銆if(in.eof())ShowMessage("宸茬粡鍒拌揪鏂囦歡灝撅紒");

浜斻佹枃浠跺畾浣?
銆銆鍜孋鐨勬枃浠舵搷浣滄柟寮忎笉鍚岀殑鏄紝C++ I/O緋葷粺綆$悊涓や釜涓庝竴涓枃浠剁浉鑱旂郴鐨勬寚閽堛備竴涓槸璇繪寚閽堬紝瀹冭鏄庤緭鍏ユ搷浣滃湪鏂囦歡涓殑浣嶇疆錛涘彟涓涓槸鍐欐寚閽堬紝瀹冧笅嬈″啓鎿嶄綔鐨勪綅緗傛瘡嬈℃墽琛岃緭鍏ユ垨杈撳嚭鏃訛紝鐩稿簲鐨勬寚閽堣嚜鍔ㄥ彉鍖栥傛墍浠ワ紝C++鐨勬枃浠跺畾浣嶅垎涓鴻浣嶇疆鍜屽啓浣嶇疆鐨勫畾浣嶏紝瀵瑰簲鐨勬垚鍛樺嚱鏁版槸 seekg()鍜?seekp()錛宻eekg()鏄緗浣嶇疆錛宻eekp鏄緗啓浣嶇疆銆傚畠浠渶閫氱敤鐨勫艦寮忓涓嬶細

銆銆銆銆istream &seekg(streamoff offset,seek_dir origin);
銆銆銆銆ostream &seekp(streamoff offset,seek_dir origin);

銆銆streamoff瀹氫箟浜?iostream.h 涓紝瀹氫箟鏈夊亸縐婚噺 offset 鎵鑳藉彇寰楃殑鏈澶у鹼紝seek_dir 琛ㄧず縐誨姩鐨勫熀鍑嗕綅緗紝鏄竴涓湁浠ヤ笅鍊肩殑鏋氫婦錛?

ios::beg錛氥銆鏂囦歡寮澶?
ios::cur錛氥銆鏂囦歡褰撳墠浣嶇疆
ios::end錛氥銆鏂囦歡緇撳熬
銆銆榪欎袱涓嚱鏁頒竴鑸敤浜庝簩榪涘埗鏂囦歡錛屽洜涓烘枃鏈枃浠朵細鍥犱負緋葷粺瀵瑰瓧絎︾殑瑙i噴鑰屽彲鑳戒笌棰勬兂鐨勫間笉鍚屻?

渚嬶細

銆銆銆銆 file1.seekg(1234,ios::cur);//鎶婃枃浠剁殑璇繪寚閽堜粠褰撳墠浣嶇疆鍚戝悗縐?234涓瓧鑺?
銆銆銆銆 file2.seekp(1234,ios::beg);//鎶婃枃浠剁殑鍐欐寚閽堜粠鏂囦歡寮澶村悜鍚庣Щ1234涓瓧鑺?/setpxecision(5)>


]]>
C++闅忕瑪 涔?鍑芥暟妯℃澘(Function Template)1 (鍘熷垱)http://m.shnenglu.com/mumutou/archive/2007/01/10/17497.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Wed, 10 Jan 2007 06:36:00 GMThttp://m.shnenglu.com/mumutou/archive/2007/01/10/17497.htmlhttp://m.shnenglu.com/mumutou/comments/17497.htmlhttp://m.shnenglu.com/mumutou/archive/2007/01/10/17497.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/17497.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/17497.html1.Function Template鍙互閽堝涓嶅悓鐨凾emplate arguments瀹屾垚涓涓郴鍒楃殑鍑芥暟
渚嬪
template<typename T>
inline T const & max(T const &a,T const &b)
{
聽聽聽return聽聽聽a>b?a:b;
}
2.Function template鍙互浠庝紶閫掕繃鏉ョ殑arguments鐨勭被鍨嬫潵鍏蜂綋鍖?br />int a = ::max(10,20);
閭d箞Function template 灝卞叿浣撳寲涓?br />inline int const& max(int const &a,int const & b)
3.浣犲彲浠ュ叿浣撴寚鍑哄畠鐨勫弬鏁扮被鍨?br />int a = ::max<int>(10,20);
4.Function template鍙互琚噸杞給verloaded
inline T const& max(T const &a,T const &b,T const &c)
{
聽聽聽return ::max(::max(a,b),c);
}
褰撶劧璁頒綇涓鐐癸紝閲嶈澆鐨勭浉浼肩偣瓚婂皬瓚婂ソ

]]>
C++闅忕瑪 涔?鍏充簬C++涓殑鎸囬拡闂 http://m.shnenglu.com/mumutou/archive/2007/01/09/17458.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Tue, 09 Jan 2007 05:48:00 GMThttp://m.shnenglu.com/mumutou/archive/2007/01/09/17458.htmlhttp://m.shnenglu.com/mumutou/comments/17458.htmlhttp://m.shnenglu.com/mumutou/archive/2007/01/09/17458.html#Feedback1http://m.shnenglu.com/mumutou/comments/commentRss/17458.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/17458.html 鍘熸枃鍑哄
http://community.csdn.net/Expert/topic/5279/5279199.xml?temp=.2457392
鍦ㄦ枃绔犱腑澶у鍦ㄨ璁轟竴涓棶棰?
濡傛灉娌℃湁瀛樺偍涓婃病鏈夊尯鍒殑璇?璇風湅涓嬩緥錛?br />float a=3.45;
int * p1=&a;
float * p2=&a;
cout<<"p1"<<"=>"<<*p1<<endl;
cout<<"p2"<<"=>"<<*p2<<endl;

緇撴灉鏄細
p1=>1107951616
p2=>3.45

涔︿笂鐨勮В閲婃槸錛歱1灝界涓巔2鐨勫湴鍧鐩稿悓錛屼絾瀹冩槸鏁村瀷鎸囬拡錛屽畠鎬繪槸璁塊棶璇ュ湴鍧涓殑鏁村瀷鏁般?br />棣栧厛鍦?2浣岰PU涓婇潰,鎸囬拡閮芥槸4浣嶇殑,渚嬪0xXX XX XX XX
閭d箞鏃㈢劧鎸囬拡鏄竴鏍風殑,閭d箞涓轟粈涔堟寚閽堢被鍨嬩笉鍚岀殑璇?璇誨嚭鏉ョ殑鏁版嵁灝卞彉浜嗘牱鍛?
榪欐槸緙栬瘧鍣ㄧ殑闂,渚嬪鎴戞湁涓緥瀛?br />
char *p = 'c';
int *p1 = 10;
鍦?2浣嶆満鍣ㄤ笂闈?br />榪欓噷闈1鏄寚鍚?瀛楄妭鐨刬nt鍙橀噺,鑰宲鏄寚鍚?瀛楄妭鐨刢har 鍙橀噺
榪欐牱緙栬瘧鍣ㄥ湪鐢╬1鍙橀噺鐨勬椂鍊?浼氬彇0x XX XX XX XX鍚庨潰鐨?涓瓧鑺?br />鑰宲鍙橀噺,鍙細鍙?x XX XX XX XX鍚庨潰鐨?涓瓧鑺?br />
鍥犱負鏈漢鐜板湪鍦ㄧ綉鍚ч噷闈涓嶇煡閬撳ぇ瀹舵湁娌℃湁鍦ㄧ綉鍚ч噷闈㈢鍒拌鏈塩++緙栬瘧鍣ㄧ殑璁$畻鏈篯
鏅氫笂鎴戠粰澶у涓涓緥瀛?鍙互浠庡叾鍐呭瓨涓婇潰鐪嬬殑寰堟竻妤?/font>



]]>
C++闅忕瑪 涔?娉涘瀷緙栫▼涓庤璁℃柊鎬濈淮(杞澆)http://m.shnenglu.com/mumutou/archive/2007/01/04/17238.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Thu, 04 Jan 2007 07:07:00 GMThttp://m.shnenglu.com/mumutou/archive/2007/01/04/17238.htmlhttp://m.shnenglu.com/mumutou/comments/17238.htmlhttp://m.shnenglu.com/mumutou/archive/2007/01/04/17238.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/17238.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/17238.html聽聽浣滆咃細寰愭櫙鍛?br />
聽聽聽姘歌繙璁頒綇錛岀紪鍐欎唬鐮佺殑瀹楁棬鍦ㄤ簬綆鍗曟槑浜嗭紝涓嶈浣跨敤璇█涓殑鍐峰兓鐗規э紝鑰嶅皬鑱槑錛岄噸瑕佺殑鏄紪鍐欎綘鐞嗚В鐨勪唬鐮侊紝鐞嗚В浣犵紪鍐欑殑浠g爜錛岃繖鏍蜂綘鍙兘浼氬仛鐨勬洿濂姐?
--- Herb Sutter

聽聽聽 1998騫達紝鍥介檯C++鏍囧噯姝e紡閫氳繃錛屾爣鍑嗗寲瀵笴++鏈閲嶈鐨勮礎鐚槸錛氬"寮哄ぇ鐨勬娊璞℃蹇?緇欎簬鏇存湁鍔涚殑鏀寔錛屼互闄嶄綆杞歡鐨勫鏉傚害錛孋++鎻愪緵浜嗕簩縐嶅姛鑳藉己澶х殑鎶借薄鏂規硶錛氶潰鍚戝璞$紪紼嬩笌娉涘瀷緙栫▼銆傞潰鍚戝璞$紪紼嬪ぇ瀹朵竴瀹氬緢鐔熸倝浜嗭紝榪欓噷灝變笉鍐嶅搯鍡︿簡銆傛彁鍒版硾鍨嬬紪紼?Generic Programming)錛屾湁鐨勪漢鍙兘榪樹笉澶啛鎮夛紝浣嗘槸鎻愬埌STL錛屼綘灝變竴瀹氫細鏈夋墍鑰抽椈浜嗐係TL(Standard Template Library錛屾爣鍑嗘ā鏉垮簱) 鍏跺疄灝辨槸娉涘瀷緙栫▼鐨勫疄鐜板搧錛孲TL鏄敱Alexander Stepanov(STL涔嬬埗)銆丏avid R Musser鍜孧eng Lee涓変綅澶у笀鍏卞悓鍙戝睍錛屼簬1994騫磋綰沖叆C++鏍囧噯紼嬪簭搴撱係TL铏界劧鍔犲叆C++鏍囧噯搴撶殑鏃墮棿鐩稿杈冩櫄錛屼絾瀹冨嵈鏄疌++鏍囧噯紼嬪簭搴撲腑鏈鍏烽潻鍛芥х殑閮ㄥ垎錛屽悓鏃朵篃鏄疌++鏍囧噯紼嬪簭搴撲腑鏈閲嶈鐨勭粍鎴愰儴鍒嗐傜敱浜庢柊鐨凜++鏍囧噯搴撲腑鍑犱箮姣忎竴鏍蜂笢瑗塊兘鏄敱妯℃澘(Template)鏋勬垚鐨勶紝褰撶劧錛孲TL涔熶笉浼氫緥澶栥傛墍浠ワ紝鍦ㄨ繖閲屾湁蹇呰鍏堟瑕佽鏄庝竴涓嬫ā鏉跨殑鏈夊叧姒傚康銆?

妯℃澘姒傚康
聽聽聽 閫氳繃浣跨敤妯℃澘鍙互浣跨▼搴忓叿鏈夋洿濂界殑浠g爜閲嶇敤鎬с傝浣忥紝妯℃澘鏄婧愪唬鐮佽繘琛岄噸鐢紝鑰屼笉鏄氳繃緇ф壙鍜岀粍鍚堥噸鐢ㄥ璞′唬鐮侊紝褰撶敤鎴蜂嬌鐢ㄦā鏉挎椂錛屽弬鏁扮敱緙栬瘧鍣ㄦ潵鏇挎崲銆傛ā鏉跨敱綾繪ā鏉垮拰鍑芥暟妯℃澘浜岄儴鍒嗙粍鎴愶紝浠ユ墍澶勭悊鐨勬暟鎹被鍨嬬殑璇存槑浣滀負鍙傛暟鐨勭被灝卞彨綾繪ā鏉匡紝鑰屼互鎵澶勭悊鐨勬暟鎹被鍨嬬殑璇存槑浣滀負鍙傛暟鐨勫嚱鏁板彨鍋氬嚱鏁版ā鏉褲傛ā鏉垮弬鏁板彲浠ョ敱綾誨瀷鍙傛暟鎴栭潪綾誨瀷鍙傛暟緇勬垚錛岀被鍨嬪弬鏁板彲鐢╟lass鍜宼ypename鍏抽敭瀛楁潵鎸囨槑錛屼簩鑰呯殑鎰忎箟鐩稿悓錛岄兘琛ㄧず鍚庨潰鐨勫弬鏁板悕浠h〃涓涓綔鍦ㄧ殑鍐呯疆鎴栫敤鎴峰畾涔夌殑綾誨瀷錛岄潪綾誨瀷鍙傛暟鐢變竴涓櫘閫氬弬鏁板0鏄庢瀯鎴愩備笅闈㈡槸綾繪ā鏉垮拰鍑芥暟妯℃澘鐨勭畝鍗曠敤娉曪細 template<class T1, int Size> class Queue // 綾繪ā鏉匡紝鍏朵腑T1涓虹被鍨嬪弬鏁幫紝Size涓洪潪綾誨瀷鍙傛暟 { public: explicit Queue():size_(Size){}; // 鏄懼紡鏋勯狅紝閬垮厤闅愬紡杞崲 鈥︹?template<class T2> void assign(T2 first,T2 last); // 鍐呭祵鍑芥暟妯℃澘 private: T* temp_; int size_; } // 綾繪ā鏉夸腑鍐呭祵鍑芥暟妯℃澘Compare鐨勫鍥村疄鐜?濡傚湪Queue綾誨瀹炵幇) template<class T1,int Size> template<class T2> void Queue<T1,Size>::assign (T2 first,T2 last) {}; // 妯℃澘鐨勪嬌鐢ㄦ柟娉?int ia[4] = {0,1,2,3}; Queue<int, sizeof(ia)/sizeof(int)> qi; qi.assign(ai,ai+4); 娉涘瀷緙栫▼
聽聽聽 娉涘瀷緙栫▼鍜岄潰鍚戝璞$紪紼嬩笉鍚岋紝瀹冨茍涓嶈姹備綘閫氳繃棰濆鐨勯棿鎺ュ眰鏉ヨ皟鐢ㄥ嚱鏁幫紝瀹冭浣犵紪鍐欏畬鍏ㄤ竴鑸寲騫跺彲閲嶅浣跨敤鐨勭畻娉曪紝鍏舵晥鐜囦笌閽堝鏌愮壒瀹氭暟鎹被鍨嬭岃璁$殑綆楁硶鐩稿悓銆傛硾鍨嬬紪紼嬬殑浠h〃浣滃搧STL鏄竴縐嶉珮鏁堛佹硾鍨嬨佸彲浜や簰鎿嶄綔鐨勮蔣浠剁粍浠躲傛墍璋撴硾鍨?Genericity)錛屾槸鎸囧叿鏈夊湪澶氱鏁版嵁綾誨瀷涓婄殕鍙搷浣滅殑鍚剰錛屼笌妯℃澘鏈変簺鐩鎬技銆係TL宸ㄥぇ錛岃屼笖鍙互鎵╁厖錛屽畠鍖呭惈寰堝璁$畻鏈哄熀鏈畻娉曞拰鏁版嵁緇撴瀯錛岃屼笖灝嗙畻娉曚笌鏁版嵁緇撴瀯瀹屽叏鍒嗙錛屽叾涓畻娉曟槸娉涘瀷鐨勶紝涓嶄笌浠諱綍鐗瑰畾鏁版嵁緇撴瀯鎴栧璞$被鍨嬬郴鍦ㄤ竴璧楓係TL浠ヨ凱浠e櫒(Iterators)鍜屽鍣?Containers)涓哄熀紜錛屾槸涓縐嶆硾鍨嬬畻娉?Generic Algorithms)搴擄紝瀹瑰櫒鐨勫瓨鍦ㄤ嬌榪欎簺綆楁硶鏈変笢瑗垮彲浠ユ搷浣溿係TL鍖呭惈鍚勭娉涘瀷綆楁硶(algorithms)銆佹硾鍨嬫寚閽?iterators)銆佹硾鍨嬪鍣?containers)浠ュ強鍑芥暟瀵硅薄(function objects)銆係TL騫墮潪鍙槸涓浜涙湁鐢ㄧ粍浠剁殑闆嗗悎錛屽畠鏄弿榪拌蔣浠剁粍浠舵娊璞¢渶姹傛潯浠剁殑涓涓瑙勮屾湁鏉$悊鐨勬灦鏋勩?
聽聽聽 榪唬鍣?Iterators)鏄疭TL鐨勬牳蹇冿紝瀹冧滑鏄硾鍨嬫寚閽堬紝鏄竴縐嶆寚鍚戝叾浠栧璞?objects)鐨勫璞★紝榪唬鍣ㄨ兘澶熼亶鍘嗙敱瀵硅薄鎵褰㈡垚鐨勫尯闂?range)銆傝凱浠e櫒璁╂垜浠緱浠ュ皢瀹瑰櫒(containers)涓庝綔鐢ㄥ叾涓婄殑綆楁硶(algorithms)鍒嗙錛屽ぇ澶氭暟鐨勭畻娉曡嚜韜茍涓嶇洿鎺ユ搷浣滀簬瀹瑰櫒涓婏紝鑰屾槸鎿嶄綔浜庤凱浠e櫒鎵褰㈡垚鐨勫尯闂翠腑銆傝凱浠e櫒涓鑸垎涓轟簲縐嶏細Input Iterator銆丱utput Iterator銆丗orward Iterator銆丅idirections Iterator鍜孯andom Access Iterator銆侷nput Iterator灝辮薄鍙粠杈撳叆鍖洪棿涓鍙栨暟鎹竴鏍鳳紝鍏鋒湁鍙鎬э紝灞炰簬鍗曞悜縐誨姩錛屽STL涓殑istream_iterator銆侽utput Iterator鍒氬ソ鐩稿弽錛屽彧鍐欏嚭鏁版嵁鍒拌緭鍑哄尯闂翠腑錛屽叿鏈夊彧鍐欐э紝灞炰簬鍗曞悜縐誨姩錛屽STL涓殑ostream_iterator銆侳orward Iterator涔熷睘浜庡崟鍚戠Щ鍔紝浣嗕笉鍚屼箣澶勬槸瀹冨悓鏃跺叿鏈夋暟鎹銆佸啓鎬с侭idirections Iterator濡傚悕縐版殫紺猴紝鏀寔鍙屽悜縐誨姩錛屼笉浣嗗彲浠ョ瘡鍔?++)鍙栧緱涓嬩竴涓厓绱狅紝鑰屼笖鍙互閫掑噺(--)鍙栧墠涓涓厓绱狅紝鏀寔璇匯佸啓鎬с俁andom Access Iterator鍔熻兘鏈寮猴紝闄や簡浠ヤ笂鍚勮凱浠e櫒鐨勫姛鑳藉錛岃繕鏀寔闅忔満鍏冪礌璁塊棶(p+=n)錛屼笅鏍?p[n])銆佺浉鍑?p1-p2)鍙婂墠鍚庢搴忓叧緋?p1<p2)絳夈侷nput Iterator鍜孫utput Iterator灞炰簬鍚岀瓑鏈寮辯殑浜岀榪唬鍣紝Forward Iterator鏄墠浜岃呭姛鑳界殑寮哄寲(refinement)錛孊idirections Iterator鍙堟槸Forward Iterator榪唬鍣ㄧ殑寮哄寲錛屾渶鍚嶳andom Access Iterator鍙堟槸Bidirections Iterator榪唬鍣ㄧ殑寮哄寲銆傚涓嬬畝鍗曠ず渚嬪睍紺篒nput Iterator銆丗orward Iterator銆丅idirections Iterator鍜孯adom Access Iterator榪唬鍣ㄧ殑鍔熻兘錛堝叾涓璱nput_iterator_tag絳夊甫tag瀛楃涓蹭負鍚勪笉鍚岃凱浠e櫒鐨勪笓灞炴爣璇嗭級錛?
1銆両nputIterator template<class InputIterator, class Distance> void advance(InputIterator& i, Distance n, input_iterator_tag) { for(; n>0; --n,++i){} // InputIterator鍏鋒湁++鎬?} 2銆丗orwardIterator template<class ForwardIterator, class Distance> void advance(ForwardIterator& i, Distance n,forward_iterator_tag) { advance(i, n, input_iterator_tag()); } 3銆丅idirectionalIterator template<class BidirectionalIterator, class Distance> void advance(BidirectionalIterator& i, Distance n, bidirectional_iterator_tag) { if(n>=0) // 鍏鋒湁++銆?-鎬?for(; n>0; --n,++i){} else for(; n>0; ++n,--i){} } 4銆丷andomAccessIterator template<class RandomAccessIterator, class Distance> void advance(RandomAccessIterator& i, Distance n, random_access_iterator_tag) { i += n; // 鍏鋒湁++銆?-銆?=絳夋?} 聽聽聽 鍑芥暟瀵硅薄(Function object)涔熺О浠垮嚱鏁?Functor)錛屾槸涓縐嶈兘浠ヤ竴鑸嚱鏁拌皟鐢ㄨ娉曟潵璋冪敤鐨勫璞★紝鍑芥暟鎸囬拡(Function pointer)鏄竴縐嶅嚱鏁板璞★紝鎵鏈夊叿鏈塷perator()鎿嶄綔絎﹂噸杞界殑鎴愬憳鍑芥暟涔熸槸鍑芥暟瀵硅薄銆傚嚱鏁板璞′竴鑸垎涓烘棤鍙傚嚱鏁?Generator)錛屽崟鍙傚嚱鏁?Unary Function)鍜屽弻鍙傚嚱鏁?Binary Function)涓夌褰㈠紡錛屽畠浠垎鍒兘浠()銆乫(x)鍜宖(x,y)鐨勫艦寮忚璋冪敤錛孲TL瀹氫箟鐨勫叾浠栨墍鏈夊嚱鏁板璞¢兘鏄繖涓夌姒傚康鐨勫己鍖栥傚涓嬬畝鍗曠ず渚嬪睍紺哄嚑縐嶅艦寮忕殑瀹炵幇錛?br />
1銆佹棤鍙?Generator)褰㈠紡 struct counter { typedef int result_type; counter(result_type init=0):n(init){} result_type operator() { return n++;} result_type n; } 2銆佸崟鍙?Unary Function)褰㈠紡 template<class Number> struct even // 鍑芥暟瀵硅薄even錛屾壘鍑虹涓涓伓鏁?{ bool operator()(Number x) const {return (x&1) == 0;} } // 浣跨敤綆楁硶find_if鍦ㄥ尯闂碅鍒癆+N涓壘鍒版弧瓚沖嚱鏁板璞ven鐨勫厓绱?int A[] = {1,0,3,4}; const int N=sizeof(A)/sizeof(int); find_if(A,A+N, even<int>()); 3銆佸弻鍙?Binary Function)褰㈠紡 struct ltstr { bool operator()(const char* s1, const char* s2) const { return strcmp(s1<s2) < 0;} }; // 浣跨敤鍑芥暟瀵硅薄ltstr錛岃緭鍑簊et瀹瑰櫒涓瑼鍜孊鐨勫茍闆?const int N=3 const char* a[N] = {"xjz","xzh","gh"}; const char* b[N]= {"jzx","zhx","abc"}; set<const char*,ltstr> A(a,a+N); set<const char*,ltstr> B(b,b+N); set_union(A.begin(),A.end(),B.begin(),B.end(), ostream_iterator<const char*>(cout," "), ltstr()); 聽聽聽 瀹瑰櫒(container)鏄竴縐嶅璞?object)錛屽彲浠ュ寘鍚茍綆$悊鍏跺畠鐨勫璞★紝騫舵彁渚涜凱浠e櫒(iterators)鐢ㄤ互瀹氬潃鍏舵墍鍖呭惈涔嬪厓绱犮傛牴鎹凱浠e櫒縐嶇被鐨勪笉鍚岋紝瀹瑰櫒涔熷垎涓哄嚑涓紝浠nput Iterator涓鴻凱浠e櫒鐨勪竴鑸琧ontainer錛屼互Forward Iterator涓鴻凱浠e櫒鐨凢orward Container錛屼互Bidirectional Iterator 涓鴻凱浠e櫒鐨凴eversible Container錛屼互Random Access Iterator涓鴻凱浠e櫒鐨凴andom Access Container銆係TL瀹氫箟浜岀澶у皬鍙彉鐨勫鍣細搴忓垪寮忓鍣?Sequence Container)鍜屽叧鑱斿紡瀹瑰櫒(Associative Container)搴忓垪寮忓鍣ㄥ寘鎷瑅ector銆乴ist鍜宒eque錛屽叧鑱斿紡瀹瑰櫒鍖呮嫭set銆乵ap銆乵ultiset鍜宮ultimap銆備互涓嬬ず渚嬬畝鍗曡鏄庨儴鍒嗗鍣ㄧ殑浣跨敤錛?1銆乿ector浣跨敤 // 灝咥涓互鍏冪礌5涓哄垎鍓茬偣錛屽垎鍒帓搴忥紝浣挎帓搴忓悗5鍚庨潰鐨勫厓绱犻兘澶т簬5涔嬪墠鐨勫厓绱?鍚庡尯闂翠笉鎺掑簭)錛?// 鐒跺悗杈撳嚭 int main() { int A[] = {7,2,6,4,5,8,9,3,1}; const int N=sizeof(A)/sizeof(int); vector<int> V(A,A+N); partial_sort(V,V+5,V+N); copy(V,V+N,ostream_iterator<int>(cout," ")); cout << endl; } 杈撳嚭鍙兘鏄細1 2 3 4 5 8 9 7 6 2銆乴ist浣跨敤 // 浜х敓涓絀簂ist錛屾彃鍏ュ厓绱犲悗鎺掑簭錛岀劧鍚庤緭鍑?int main() { list<int> L1; L1.push_back(0); L1.push_front(1); L1.insert(++L1.begin,3); L1.sort(); copy(L1.begin(),L1.end(),ostream_iterator<int>(cout," ")); } 杈撳嚭錛? 1 3 3銆乨eque浣跨敤 int main() { deque<int> Q; Q.push_back(3); Q.push_front(1); Q.insert(Q.begin()+1,2); Copy(Q.begin(),Q.end(),ostream_iterator<int>(cout," ")); } 杈撳嚭錛? 2 3 4銆乵ap浣跨敤 int main() { map<string,int> M; M.insert(make_pair("A",11); pair<map<string,int>::iterator, bool> p = M.insert(make_pair("C",5)); if(p.second) cout << p.first->second<<endl; } 杈撳嚭錛? 5銆乵ultiset浣跨敤 int main() { const int N = 5; int a[N] = {4,1,1,3,5}; multiset<int> A(a,a+N); copy(A.begin(),A.end(),ostream_iterator<int>(cout," ")); } 杈撳嚭錛? 1 3 4 5 璁捐鏂版濈淮
聽聽聽 灝嗚璁℃ā寮?design patterns)銆佹硾鍨嬬紪紼?generic programming)鍜岄潰鍚戝璞$紪紼?object-oriented programming)鏈夋満鐨勭粨鍚堣搗鏉ワ紝渚垮艦鎴愪簡璁捐鏂版濈淮銆傚叾涓紝璁捐妯″紡鏄粡榪囨彁鐐肩殑鍑鴻壊璁捐鏂規硶錛屽浜庡緢澶氭儏鍐典笅紕板埌鐨勯棶棰橈紝瀹冮兘鏄悎鐞嗚屽彲澶嶇敤鐨勮В鍐蟲柟妗堬紱娉涘瀷緙栫▼鏄竴縐嶅吀鑼?paradigm)錛屼笓娉ㄤ簬灝嗙被鍨嬫娊璞″寲錛屽艦鎴愬姛鑳介渶姹傛柟闈㈢殑涓涓簿緇嗛泦鍚堬紝騫跺埄鐢ㄨ繖浜涢渶姹傛潵瀹炵幇綆楁硶錛岀浉鍚岀殑綆楁硶鍙互榪愮敤浜庡箍娉涚殑綾誨瀷闆嗕腑錛屾墍璋撴硾鍨嬶紝灝辨槸鍏鋒湁鍦ㄥ縐嶆暟鎹被鍨嬩笂鐨嗗彲鎿嶄綔鐨勫惈鎰忥紱鏈鍚庡悓闈㈣薄瀵硅薄緙栫▼涓殑澶氭?polymorphism)鍜屾ā鏉?templates)絳夋妧鏈浉緇撳悎錛屼究鑾峰緱鏋侀珮灞傛涓婄殑鍏鋒湁鍙鐢ㄦх殑娉涘瀷緇勪歡銆傛硾鍨嬬粍浠墮鍏堝疄鐜頒簡璁捐妯″潡錛屽彲浠ヨ鐢ㄦ埛鎸囧畾綾誨瀷鍜岃涓猴紝浠庤屽艦鎴愬悎鐞嗙殑璁捐錛屼富瑕佺壒鐐規槸鐏墊椿銆侀氱敤鍜屾槗鐢ㄣ?
聽聽聽 policies鍜宲olicy綾伙紝鏄竴縐嶉噸瑕佺殑綾昏璁℃妧鏈紝鎵璋損olicy錛屾槸鐢ㄦ潵瀹氫箟涓涓被鎴栫被妯℃澘鐨勬帴鍙o紝璇ユ帴鍙g敱涓嬪垪涔嬩竴鎴栧叏閮ㄧ粍鎴愶細鍐呴儴綾誨瀷瀹氫箟銆佹垚鍛樺嚱鏁板拰鎴愬憳鍙橀噺銆傚熀浜巔olicy鐨勭被鐢辮澶氬皬鍨嬬被(縐頒負policies)緇勬垚錛屾瘡涓涓繖鏍風殑灝忓瀷綾誨彧璐熻矗鍗曠函濡傝涓烘垨緇撴瀯鐨勬煇涓鏂歸潰銆侾olicies鏈哄埗鐢辨ā鏉垮拰澶氶噸緇ф壙緇勬垚錛屽畠浠彲浠ヤ簰鐩告販鍚堟惌閰嶏紝浠庤屽艦鎴愯璁℃垘鐨勫鏍鋒э紝閫氳繃plicy綾伙紝涓嶄絾鍙互瀹氬埗琛屼負錛屼篃鍙互瀹氬埗緇撴瀯銆?

涓嬮潰綆鍗曚婦渚嬭鏄庢硾鍖栨濈淮鍜岄潰鍚戝璞℃濈淮鍦ㄩ儴鍒嗚璁℃ā寮忎腑鐨勮繍鐢ㄣ?

聽聽聽 Singletons璁捐妯″紡娉涘寲瀹炵幇 Singleton妯″紡鏄竴縐嶄繚璇佷竴涓璞?class)鍙湁涓涓疄浣擄紝騫朵負瀹冩彁渚涗竴涓叏灞璁塊棶鐐廣係ingleton鏄竴縐嶇粡榪囨敼榪涚殑鍏ㄥ眬鍙橀噺錛屾棦鍦ㄧ▼搴忎腑鍙兘鏈夊敮涓瀹炰綋鐨勭被鍨嬶紝瀹冪殑閲嶇偣涓昏闆嗕腑鍦ㄤ駭鐢熷拰綆$悊涓涓嫭绔嬪璞′笂錛岃屼笖涓嶅厑璁鎬駭鐢熷彟涓涓繖鏍風殑瀵硅薄銆?
鍏堣鎴戜滑鐪嬬湅涓鑸殑C++瀹炵幇鐨勫熀鏈墜娉曪紝涓嬮潰鏄疄鐜版簮鐮侊細 // Singleton.h鏂囦歡涓?class Singleton { public: static Singleton& Instance() { if(!pInstance_){ if(destroyed_){ // 寮曠敤鏄惁宸茬粡澶辨晥 OnDeadReference(); } else { Create(); // 絎竴嬈℃椂鍒涘緩瀹炰緥 } } return *pInstance_; } private: Singleton(); // 紱佹榛樿鏋勯?Singleton(const Singleton&); // 紱佹鎷瘋礉鏋勯?Singleton& operator= (const Singleton&);銆 // 紱佹璧嬪兼搷浣?static void Create() // 浼犲姞鍒涘緩鐨勫疄渚嬪紩鐢?{ static Singleton theInstance; pInstance_ = &theInstance; } static void OnDeadReference() { throw std::runtime_error(" 瀹炰緥琚笉姝e綋娑堟瘉"); } virtual ~Singleton() { pInstance- = 0; destroyed_ = true; } static Singleton *pInstance_; static bool destroyed_; } // Singleton.cpp涓潤鎬佹垚鍛樺彉閲忓垵濮嬪寲 Singleton* Singleton::pInstance_ = 0; Bool Singleton::destroyed_ = false; 聽聽聽 濡備笂鎵紺猴紝Singleton妯″紡瀹炵幇涓彧鏈変竴涓猵ublic鎴愬憳Instance()鐢ㄦ潵絎竴嬈′嬌鐢ㄦ椂鍒涘緩鍗曚竴瀹炰緥錛屽綋絎簩嬈′嬌鐢ㄦ椂闈欐佸彉閲忓皢宸茬粡琚瀹氬ソ錛屼笉浼氬啀嬈″垱寤哄疄渚嬨傝繕灝嗛粯璁ゆ瀯閫犲嚱鏁般佹嫹璐濇瀯閫犲嚱鏁板拰璧嬪兼搷浣滅鏀懼湪private涓紝鐩湴鏄笉璁╃敤鎴蜂嬌鐢ㄥ畠浠傚彟澶栵紝涓洪伩鍏嶅疄渚嬫剰澶栨秷姣佸悗鍐嶅疄渚嬪寲鎯呭喌錛屽姞鍏ラ潤鎬佸竷灝斿彉閲廳estroy_鏉ヨ繘琛屽垽鏂槸鍚﹀嚭閿欙紝浠庤岃揪鍒扮ǔ瀹氭с?br />聽聽聽 浠庝笂闈竴鑸疄鐜板彲浠ョ湅鍑篠ingleton妯″紡瀹炵幇涓昏鍦ㄤ簬鍒涘緩(Creation)鏂歸潰鍜岀敓瀛樻湡(Lifetime)鏂歸潰錛屾棦鍙互閫氳繃鍚勭鏂規硶鏉ュ垱寤篠ingleton銆侰reation蹇呯劧鑳藉垱寤哄拰鎽ф瘉瀵硅薄錛屽繀鐒惰寮鏀捐繖涓や釜鐩稿簲鍑芥暟錛屽皢鍒涘緩浣滀負鐙珛絳栫暐鍒嗙寮鏉ユ槸蹇呴渶鐨勶紝榪欐牱浣犲氨鍙互鍒涘緩澶氭佸璞′簡錛屾墍浠ユ硾鍖朣ingleton騫朵笉鎷ユ湁Creator瀵硅薄錛屽畠琚斁鍦–reationPolicy<T>綾繪ā鏉夸箣涓傜敓鍛芥湡鏄寚瑕侀伒寰狢++瑙勫垯錛屽悗鍒涘緩閮藉厛鎽ф瘉錛岃礋璐g▼搴忕敓鍛芥湡鏌愪竴鏃跺埢鎽ф瘉Singleton瀵硅薄銆?

涓嬮潰鏄竴涓畝鍗曠殑娉涘寲Singleton妯″紡鐨勫疄鐜?涓嶈冭檻綰跨▼鍥犵礌) template < class T, template<class> calss CreationPolicy = CreateUsingNew, template<class> class LifetimePolicy=DefaultLifetime, > classs SingletonHolder { public: static T& Instance() { if(!pInstance_) { if(destroyed_) { LifetimePolicy<T>::OnDeadReference(); destroyed_ = false; } pInstance_ = CreationPolicy<T>::Create(); LifetimePolicy<T>::SchedultCall(&DestorySingleton); } return *pInstance_; } private: static void DestroySinleton() { assert(!destroyed_); CreationPlicy<T>::Destroy(pInstance_); pInstance_ = 0; destroyed_ = true; } SingletonHolder(); SingletonHolder (const SingletonHolder &); SingletonHolder & operator= (const SingletonHolder &);銆 Static T* pInstance_; Static bool destroyed_; }; 聽聽聽 Instance()鏄疭ingletonHolder寮鏀劇殑鍞竴涓涓猵ublic鍑芥暟錛屽畠鍦–reationPolicy銆丩ifetimePolicy涓墦閫犱簡涓灞傚澹熾傚叾涓ā鏉垮弬鏁扮被鍨婽錛屾帴鏀剁被鍚嶏紝鏃㈤渶瑕佽繘琛孲ingleton鐨勭被銆傛ā鏉垮弬鏁板唴鐨勭被妯℃澘緙虹渷鍙傛暟CreateUsingNew鏄寚閫氳繃new鎿嶄綔絎﹀拰榛樿鏋勯犲嚱鏁版潵浜х敓瀵硅薄錛孌efaultLifetime鏄氳繃C++瑙勫垯鏉ョ鐞嗙敓鍛芥湡銆侺ifetimePolicy<T>涓湁浜屼釜鎴愬憳鍑芥暟錛孲cheduleDestrution()鍑芥暟鎺ュ彈涓涓嚱鏁版寚閽堬紝鎸囧悜鏋愭瀯鎿嶄綔鐨勫疄闄呮墽琛屽嚱鏁幫紝濡備笂闈estorySingleton鏋愭瀯鍑芥暟錛汷nDeadReference()鍑芥暟鍚屼笂闈竴鑸珻++涓悓鍚嶅嚱鏁扮浉鍚岋紝鏄礋璐e彂鐜板け鏁堝疄渚嬫潵鎶涘嚭寮傚父鐨勩侰reationPlicy<T>涓殑Create()鍜孌estroy()涓ゅ嚱鏁版槸鐢ㄦ潵鍒涘緩騫舵懅姣佸叿浣撳璞$殑銆?

涓嬮潰鏄笂榪版硾鍖朣ingleton妯″紡瀹炵幇鐨勪嬌鐢細

1銆佸簲鐢ㄤ竴 class A{}; typedef SingletonHolder<A, CreateUsingNew> SingleA; 2銆佸簲鐢ㄤ簩 class A{}; class Derived : public A {}; template<class T> struct MyCreator : public CreateUsingNew<T> { static T* Create() { return new Derived; } static void Destroy(T* pInstance) { delete pInstance; } } typedef SingletonHolder<A,MyCreator> SingleA; 聽聽聽 閫氳繃涓婇潰紺轟緥鍙互鐪嬪嚭錛?SingletonHolder閲囩敤鍩轟簬plicy璁捐瀹炵幇錛屽畠灝哠ingleton瀵硅薄鍒嗚В涓烘暟涓猵olicies錛屾ā鏉垮弬鏁扮被涓瑿reationPolicy鍜孡ifetimePolicy鐩稿綋浜庝簩涓猵olicies灝佽浣撱傚埄鐢ㄥ畠浠彲浠ュ崗鍔╁埗浣滃嚭浣跨敤鑰呰嚜瀹氫箟鐨凷ingleton瀵硅薄錛屽悓鏃惰繕棰勭暀浜嗚皟鏁村拰鎵╁睍鐨勭┖闂淬傜敱姝よ屽緱錛屾硾鍨嬬粍浠?generic components)錛屾槸涓縐嶅彲澶嶇敤鐨勮璁℃ā鏉匡紝緇撳悎浜嗘ā鏉垮拰妯″紡錛屾槸C++涓垱閫犲彲鎵╁厖璁捐鐨勬柊鏂規硶錛屾彁渚涗簡浠庤璁″埌浠g爜鐨勭畝鏄撹繃娓★紝甯姪鎴戜滑緙栧啓娓呮櫚銆佺伒媧匯侀珮搴﹀彲澶嶇敤鐨勪唬鐮併?

鍙傝冩枃鐚?
  • C++ Primer(絎笁鐗? --- 娼樼埍姘戠瓑璇?
  • Effective C++(絎簩鐗? --- 渚嵎璇?
  • More Effective C++ --- 渚嵎璇?
  • Exceptional C++ --- 鍗撳皬娑涜瘧
  • More Exceptional C++ --- 鏂兼槬鏅瘧
  • 娣卞害鎺㈢儲C++瀵硅薄妯″瀷 --- 渚嵎璇?
  • 娉涘瀷緙栫▼涓嶴TL --- 渚嵎璇?
  • C++ STL紼嬪簭鍛樺紑鍙戞寚鍗?--- 褰湪鏍圭瓑綆?
  • 璁捐妯″紡錛氬彲澶嶇敤闈㈠悜瀵硅薄杞歡鐨勫厓绱?--- 鏉庤嫳鍐涚瓑璇?
  • C++璁捐鏂版濈淮 --- 渚嵎絳夎瘧


鏈ㄦ湪澶?/a> 2007-01-04 15:07 鍙戣〃璇勮
]]>C++闅忕瑪 涔?STL[vector]鐨勫瓨鍌ㄦ妧鏈?鍘熷垱)http://m.shnenglu.com/mumutou/archive/2007/01/04/17231.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Thu, 04 Jan 2007 06:26:00 GMThttp://m.shnenglu.com/mumutou/archive/2007/01/04/17231.htmlhttp://m.shnenglu.com/mumutou/comments/17231.htmlhttp://m.shnenglu.com/mumutou/archive/2007/01/04/17231.html#Feedback1http://m.shnenglu.com/mumutou/comments/commentRss/17231.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/17231.html棣栧厛鎴戜滑鍏堟潵鐪婨xample Code:
#include <vector>
#include <iostream>
#include <memory>
using namespace std;
void main()
{
聽vector<int> v;
//聽cout<<v.allocator;
聽v.push_back(0);
聽v.push_back(1);
聽v.push_back(2);
聽v.push_back(3);
聽v.push_back(4);
聽v.push_back(5);
聽cout<<v.max_size();
}
鍒╃敤VC6.0鐨勫唴瀛樿皟璇?br />聽v.push_back(0);涔嬪悗
//_First榪唬鍣?0481B40
//_Last榪唬鍣?0481B44
//_End榪唬鍣?04B1B44
聽v.push_back(1);涔嬪悗
//_First榪唬鍣?0481B00
//_Last榪唬鍣?0481B08
//_End榪唬鍣?04B1B08
涓轟粈涔堝湪鎵ц涓嬈ush_back涔嬪悗,榪唬鍣ㄥ叏閮ㄤ細鍙樺憿?
涓嬮潰鎴戜滑鐪嬬湅P.J. Plauger鐨勪唬鐮?br />聽void insert(iterator _P, size_type _M, const _Ty& _X)
聽聽{if (_End - _Last < _M)
聽聽聽{size_type _N = size() + (_M < size() ? size() : _M);
聽聽聽iterator _S = allocator.allocate(_N, (void *)0);
聽聽聽iterator _Q = _Ucopy(_First, _P, _S);
聽聽聽_Ufill(_Q, _M, _X);
聽聽聽_Ucopy(_P, _Last, _Q + _M);
聽聽聽_Destroy(_First, _Last);
聽聽聽allocator.deallocate(_First, _End - _First);
聽聽聽_End = _S + _N;
聽聽聽_Last = _S + size() + _M;
聽聽聽_First = _S; }
聽聽else if (_Last - _P < _M)
聽聽聽{_Ucopy(_P, _Last, _P + _M);
聽聽聽_Ufill(_Last, _M - (_Last - _P), _X);
聽聽聽fill(_P, _Last, _X);
聽聽聽_Last += _M; }
聽聽else if (0 < _M)
聽聽聽{_Ucopy(_Last - _M, _Last, _Last);
聽聽聽copy_backward(_P, _Last - _M, _Last);
聽聽聽fill(_P, _P + _M, _X);
聽聽聽_Last += _M; }}

鍏朵腑M = 1;
褰揰End - _Last < _M鏃?灝辮閲嶆柊鍒嗛厤鍐呭瓨浜?鍝﹀師鏉ユ椂榪欐牱鐨?
[涓漢璁や負,鍦ㄦ柟渚胯皟璇曠殑鏃跺?鍙互鎶奀:\MSDEV\VC98\Include\涓嬮潰鐨剉ector鏂囦歡涓殑protected鏀規垚public:]
涓嬮潰鎴戠粰鍑哄湪5嬈℃彃鍏ヤ箣鍚庡叾鍐呭瓨鍒嗛厤
push_back(2)
//00481AC0
//00481ACC
//00481AD0
push_back(3);
//00481AC0
//00481AD0
//00481AD0
push_back(4);
//00481B20
//00481B34
//00481B40
push_back(5);
//00481B20
//00481B38
//00481B40
娉ㄦ剰娌℃湁,_Last - _First涔嬪悗鐨勬槑鏄炬槸size() * 4
[娉?鍦╒C6.0鐨凷TL鐗堟湰鏄噰鐢ㄧ殑PJSTL鐗堟湰,鏄竴縐嶅叕璁ゆ渶鍨冨溇鐨凷TL鐗堟湰
鍦–++ Builder涓殑STL鐗堟湰鏄噰鐢ㄧ殑RW鐗堟湰,Rouge Wave鍏徃
鍦╱nix涓嬮潰GCC閲囩敤鐨勬槸SGI Silicon Graphics Computer System Inc鍏徃STL鐗堟湰,鎴戣涓哄湪鍙鎬?鍙Щ妞嶆ф柟闈㈡渶濂界殑涓涓増鏈琞


]]>
C++闅忕瑪 涔?C++鏍囧噯搴?(鍘熷垱)錛嶏紞STLhttp://m.shnenglu.com/mumutou/archive/2007/01/04/17207.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Thu, 04 Jan 2007 02:48:00 GMThttp://m.shnenglu.com/mumutou/archive/2007/01/04/17207.htmlhttp://m.shnenglu.com/mumutou/comments/17207.htmlhttp://m.shnenglu.com/mumutou/archive/2007/01/04/17207.html#Feedback2http://m.shnenglu.com/mumutou/comments/commentRss/17207.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/17207.html闃呰鍏ㄦ枃

]]>
C++闅忕瑪 涔?C++鏍囧噯搴?(鍘熷垱)錛嶏紞妯$増鏂規硶http://m.shnenglu.com/mumutou/archive/2006/12/29/16984.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Fri, 29 Dec 2006 07:12:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/29/16984.htmlhttp://m.shnenglu.com/mumutou/comments/16984.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/29/16984.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/16984.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16984.html 妯$増鏂規硶
鍦?涓垜宸茬粡璇磋繃浜嗭紝C++鏍囧噯搴撴槸鍩轟簬妯$増鎶鏈瀯寤虹殑錛宑omplex鏄ā鐗堬紝string鏄ā鐗堬紝vector鏄ā鐗堬紝灝辮繛I/O涔熸槸妯$増銆?br />鍦–++鏍囧噯搴撲腑妯$増鍏卞垎涓?涓紝涓縐嶆槸綾繪ā鏉匡紝榪樻湁涓縐嶆槸鍑芥暟妯$増
妯$増鐨勪竴鑸畾涔夋柟寮?br />template <綾誨瀷鍨嬪弬琛?gt; 榪斿洖綾誨瀷 綾誨悕 <綾誨瀷鍚嶈〃>::鎴愬憳鍑芥暟1(鍨嬪弬琛?
{
聽聽聽鎴愬憳鍑芥暟1瀹氫箟浣?br />}
妯$増鍑芥暟鐨勪竴鑸畾涔夋柟寮?br />template <綾誨瀷鍨嬪弬琛?gt;榪斿洖綾誨瀷 鍑芥暟鍚?鍨嬪弬琛?
{
聽聽聽鍑芥暟瀹氫箟浣?br />}
鏈変竴鍙ヨ瘽璇寸殑姣旇緝濂斤紝涓涓被妯$増鎻忚堪鐨勬槸涓涓棤闄愮殑綾葷殑闆嗗悎錛岃岀▼搴忓憳鎵鐪嬪埌鐨勬槸榪欎簺綾諱腑鐨勬渶鏅亶鐨勫湴鏂廣傞偅涔堬紝C++涔熸敮鎸佹棤闄愰泦鍚堝嚱鏁扮殑姒傚康浜嗐?br />涓嬮潰鏄竴涓ā鐗堝嚱鏁扮殑瀹氫箟瀹炰緥錛?br />Example Code:
template <class T>
T max(T a1,T a2,T a3)
{
聽聽聽T temp;
聽聽聽if((a1聽> a2) && (a1 >a3))聽{temp = a1;}
聽聽聽else if((a2 > a1) && (a2 > a3)){temp = a2;}
聽聽聽else聽聽聽{temp = a3};
聽聽聽return a3;
}
灝卞彲浠ヤ嬌鐢╩ax(100,200,300);
綾繪ā鐗堢殑涓鑸畾涔夋柟寮?br />template <class T>
class A:
{
聽聽聽T* x;
聽聽聽int size;
public:
聽聽聽T& operator[](int);
};
灝卞彲浠ヤ嬌鐢ˋ<int> a;瀹氫箟浜?br />

]]>
C++ 闅忕瑪 涔?C++鏍囧噯搴?(鍘熷垱)錛嶏紞C++鏍囧噯搴撶畝浠?/title><link>http://m.shnenglu.com/mumutou/archive/2006/12/29/16980.html</link><dc:creator>鏈ㄦ湪澶?/dc:creator><author>鏈ㄦ湪澶?/author><pubDate>Fri, 29 Dec 2006 06:54:00 GMT</pubDate><guid>http://m.shnenglu.com/mumutou/archive/2006/12/29/16980.html</guid><wfw:comment>http://m.shnenglu.com/mumutou/comments/16980.html</wfw:comment><comments>http://m.shnenglu.com/mumutou/archive/2006/12/29/16980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/mumutou/comments/commentRss/16980.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/mumutou/services/trackbacks/16980.html</trackback:ping><description><![CDATA[ <font size="6"> <strong>C++鏍囧噯搴撶畝浠?/strong> </font> <br /> <font face="Courier New" size="2">棣栧厛涓轟簡鑰冭檻閫氱敤鎬э紝濡傛灉鐢ㄤ竴縐嶆柊鐨勬爣鍑嗗鑷村師鏈夌殑浠g爜涓嶈兘鐢紝閭e皢鏄竴浠跺緱涓嶅伩澶辯殑浜嬫儏銆?br />鎵浠ヤ負浜嗗噺杞繪垜浠殑璐熸媴錛屾槸紼嬪簭鍛樼殑寮鍙戝彉寰楃畝鍗曪紝鏍囧噯濮斿憳浼氬喅瀹氫負鍖呰浜唖td鐨勯偅閮ㄥ垎鏍囧噯搴撴瀯寤烘柊鐨勬枃浠跺悕錛岀敓鎴愭柊鐨勫ご鏂囦歡鍚嶇殑鏂規硶灝辨槸<br />瀵逛簬C++澶存枃浠跺悕,鍘繪帀澶存枃浠跺悕鍚庣殑.h<br /><iostream.h>---<iostream><br /><complex.h> ----<complex><br />瀵逛簬C澶存枃浠跺悕錛屽湪姣忎釜鍚嶅瓧鍓嶉潰鍔犱笂c<br /><string.h>-----<cstring><br /><stdlib.h> ------<cstdlib><br />鍘熸湁C++澶存枃浠剁殑鏈潵:<br />1.C++澶存枃浠跺悕濡?lt;iostream.h>灝嗕細緇х畫琚嬌鐢紝灝界瀹冧滑涓嶅湪鎻愬¤寖鍥翠箣鍐咃紝浣嗘槸榪欎簺澶存枃浠剁殑鍐呭涓嶅懡鍚嶇┖闂磗td涓?br />2.鏂扮殑C++澶存枃浠跺<iostream>鎵鍖呭惈鐨勫熀鏈姛鑳藉拰瀵瑰簲鐨勫氨C++澶存枃浠剁浉鍚岋紝浣嗘槸瀹冧滑鐨勫唴瀹瑰嵈鍦ㄥ懡鍚嶇┖闂磗td涓?br />3.灝辯殑C澶存枃浠跺<string.h>緇х畫浣跨敤錛屼絾鏄繖浜涘ご鏂囦歡鐨勫唴瀹逛笉鍦╯td涓?br />4.鍏鋒湁C澶存枃浠跺姛鑳界殑鏂癈++澶存枃浠?lt;cstring>瀹炵幇鍜屽師鏈塁澶存枃浠剁浉鍚岀殑鍔熻兘錛屼絾鏄唴瀹瑰湪std涓?br />鏁翠釜铻嶅悎鍚庢柊C++鏍囧噯搴撴湁浠ヤ笅緇勪歡錛?br />1.鏍囧噯C搴?..<cstring>,<cstdlib>絳夌瓑<br />2.I/O嫻佹妧鏈紝鍜屼紶緇熺殑I/O嫻佹妧鏈浉姣旓紝瀹冨凡緇忔ā鐗堝寲浜?br />3.string瀵硅薄銆傝繖閲屾垜瑕佺潃閲嶈涓涓?br />鍦ㄥ師鏈夌殑C澶存枃浠?lt;string.h>錛屾槸鍩轟簬char*鐨勫瓧絎︿覆澶勭悊鍑芥暟錛?br />鑰屽湪std鍛藉悕絀洪棿涓紝鎴栬呰鏂扮殑C++鏍囧噯搴撲腑錛屾垨鑰呰<string>涓紝</font> <font size="2"> <font face="Courier New"> <font color="#ff1493"> <strong>鎴栬呰<cstring>[璇存硶閿欒錛屼負浠涔堥敊璇紵鍛靛懙錛屾兂鎯沖氨鏄庣櫧浜?瀹冩槸C澶存枃浠剁殑std] <br /></strong> </font>瀹冩槸涓涓被錛屼竴涓猻tring綾伙紝涓涓熀浜巄asic_string<char>鐨勭被<br />typedef base_string <char> string<br />4.瀹瑰櫒錛屾爣鍑嗗簱鎻愪緵浜唙ector,list,deque,queue,stack,map,set,multimap絳夌瓑<br />5.綆楁硶錛岀畻娉曞皢瀹瑰櫒鐨勫唴瀹瑰綋浣滃簭鍒椼?br />6.鎵鏈夌殑搴撲腑涓鍒囧嚑涔庨兘鏄ā鐗堬紝I/O鏄ā鏉匡紝string鏄ā鐗堬紝vector鏄ā鏉匡紝complex鏄ā鐗堛?br /></font> </font> <img src ="http://m.shnenglu.com/mumutou/aggbug/16980.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/mumutou/" target="_blank">鏈ㄦ湪澶?/a> 2006-12-29 14:54 <a href="http://m.shnenglu.com/mumutou/archive/2006/12/29/16980.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C++闅忕瑪 涔?C++鏍囧噯搴?(鍘熷垱)錛嶏紞C++緙栬瘧鍣ㄦ敮鎸?/title><link>http://m.shnenglu.com/mumutou/archive/2006/12/29/16977.html</link><dc:creator>鏈ㄦ湪澶?/dc:creator><author>鏈ㄦ湪澶?/author><pubDate>Fri, 29 Dec 2006 06:24:00 GMT</pubDate><guid>http://m.shnenglu.com/mumutou/archive/2006/12/29/16977.html</guid><wfw:comment>http://m.shnenglu.com/mumutou/comments/16977.html</wfw:comment><comments>http://m.shnenglu.com/mumutou/archive/2006/12/29/16977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/mumutou/comments/commentRss/16977.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/mumutou/services/trackbacks/16977.html</trackback:ping><description><![CDATA[ <font color="#000000" size="6"> <strong>C++緙栬瘧鍣ㄦ敮鎸?/strong> </font> <br /> <font face="Courier New" size="2">浠ヤ笅鎴戞墍璇寸殑C++鏍囧噯搴撴槸鎸囨柊鐨凜++鏍囧噯搴?br />鏀寔C++鏍囧噯搴撶殑緙栬瘧鍣細<br />Borland C++,version 5.5(DOS/Windows)鍙婂叾浠ヤ笂鐗堟湰<br />SGI C++,version 7.3.1m鍙婂叾浠ヤ笂鐗堟湰<br />GNU C++,version 2.95.2鍙婂叾浠ヤ笂鐗堟湰<br />Microsoft Visual C++ Compiler,Version6.0鍙婂叾浠ヤ笂鐗堟湰銆?br />鐢變簬鐩墠Microsoft Visual C++ Compiler涓嶈兘瀹屽叏鏀寔C++鏍囧噯搴擄紝鎵浠ユ湰浜鴻寰椾笉鎻愬¢噰鐢╒isual C++ 6.0 IDE榪涜C++鏍囧噯搴撶紪紼嬨?br /></font> <img src ="http://m.shnenglu.com/mumutou/aggbug/16977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/mumutou/" target="_blank">鏈ㄦ湪澶?/a> 2006-12-29 14:24 <a href="http://m.shnenglu.com/mumutou/archive/2006/12/29/16977.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C++闅忕瑪 涔? C++鏍囧噯搴?(鍘熷垱)錛嶏紞鏍囧噯搴撶殑鍘嗗彶http://m.shnenglu.com/mumutou/archive/2006/12/29/16976.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Fri, 29 Dec 2006 06:20:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/29/16976.htmlhttp://m.shnenglu.com/mumutou/comments/16976.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/29/16976.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/16976.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16976.html C++鏍囧噯搴撶殑鍒嗙被
棣栧厛錛孋++鏍囧噯搴撴湁涓ょ錛屼竴縐嶆槸鑰佺殑錛屼竴縐嶆槸鏂扮殑
鑰佺殑C++鏍囧噯澶ф鍦?0騫翠唬鏈紝90騫翠唬鍒濆畾鍨嬬殑銆?br />瀵逛簬鎴戜滑鐜板湪鎵鍐欑殑涓浜涚▼搴忎緷鏃у湪浣跨敤鑰佺殑C++ 鏍囧噯搴擄紝
渚嬪
#include <iostream.h>
#include <string.h>榪欐槸鑰佺殑C++鏍囧噯搴?br />
#include <cstring>榪欐槸鏂扮殑C++鏍囧噯搴?br />澶ф鍦?998騫寸殑鏃跺欐垚绔嬬殑榪欎釜涓涓爣鍑嗭紝鍚庢潵鏄ぇ姒傚湪2001騫村姞鍏TL 妯$増鏍囧噯錛屽湪C++鏍囧噯鐨勮崏妗堜腑鎺ョ撼STL涓篊++鏍囧噯鐨勪竴閮ㄥ垎銆備篃灝辨槸璇碨TL鍙槸C++鏍囧噯搴撲腑鐨勪竴閮ㄥ垎銆?br />鐜板湪鎴戜滑涓鑸殑緙栬瘧鍣ㄩ兘鏀寔STL妯$増鏍囧噯錛孾鍥犱負榪欎釜鏈韓涔熸槸C++鏍囧噯涓閮ㄥ垎]
鐒跺悗VC6.0涓殑MFC鏄竴涓彟綾伙紝榪欐槸microsoft鍏徃涓轟簡鎵撻犲畠鐨処DE錛屼笉鎯滀嬌鐢ㄤ簡涓浜涘拰C++鏍囧噯搴撴兂榪濊儗鐨勪笢瑗匡紝浣嗘槸娌℃湁娌℃湁鍔炴硶錛岃皝璁╀漢瀹舵槸鑰佸ぇ閭o紵
Visual C++緙栬瘧鍣ㄥ彧鏄儴鍒嗘敮鎸佽佺殑C++鏍囧噯搴撳拰鏂扮殑 C++鏍囧噯搴撱?br />



]]>
C/C++ 闅忕瑪 涔?甯哥敤宸ュ叿(杞澆)http://m.shnenglu.com/mumutou/archive/2006/12/28/16939.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Thu, 28 Dec 2006 06:02:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/28/16939.htmlhttp://m.shnenglu.com/mumutou/comments/16939.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/28/16939.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/16939.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16939.html
緇檆++紼嬪簭鍛樼殑涓浠界ぜ鐗┾斺斿父鐢ㄥ伐鍏烽泦聽
鍘熸枃鍑哄錛歨ttp://morningspace.51.net/

銆鎵璋?宸ユ鍠勫叾浜嬶紝蹇呭厛鍒╁叾鍣?錛屼粠紼嬪簭鍛樼殑瑙掑害鏉ヨ錛屽ソ宸ュ叿鐨勪嬌鐢ㄦ諱細緇欎漢甯︽潵浜嬪崐鍔熷嶇殑鏁堟灉銆傞潰瀵逛紬澶氬伐鍏?杞歡錛屾垜浠簲璇ュ浣曞彇鑸嶅憿銆傚墠涓嶄箙錛岀瑪鑰呭湪csdn鐨刢++璁哄潧鍙戜簡涓綃?/font> 璐存枃 錛屼互鏈熻兘寰佹眰澶у鐨勫箍娉涙剰瑙侊紝寰楀埌浜嗕笉閿欑殑鍙嶅搷銆傛湰鏂囧湪瀵硅璐磋繘琛屾暣鐞嗙殑鍩虹涓婏紝鍙堝仛浜嗕竴浜涜ˉ鍏呫傚湪榪欓噷瑕佺壒鍒劅璋㈢綉鍙嬶細DanielWYO(鐖變笂灝忕櫧)錛宺edleaves(鏃犲績綰㈠彾)銆?


鏈変互涓嬪嚑鐐歸渶瑕佸0鏄庯細

  1. 鏈枃涓昏鏄拡瀵筩++紼嬪簭鍛樼殑錛屼絾涓浜涚患鍚堢被鐨勯氱敤鍨嬪伐鍏?杞歡錛屼綔涓篶++紼嬪簭鍛樿岃█涔熸槸涓嶅彲鎴栫己鐨勶紝鍥犳涔熻鍒楀叆鍏朵腑銆傚悓鏍鳳紝榪欎簺宸ュ叿/杞歡錛屽鍏朵粬璇█鐨勭▼搴忓憳錛屼篃鏄傜敤鐨勩?銆銆銆銆
  2. 瀵規墍鍒楀悇綾誨伐鍏?杞歡鐨勮瘎浠鳳紝鍏朵緷鎹槸澶氭暟緗戝弸鐨勮鐐規眹鎬伙紝騫剁粨鍚堜簡絎旇呰嚜宸辯殑涓漢瑙傜偣錛屼緵鍙傝冿紝濡傛湁涓嶅疄涔嬪錛屾榪庢寚姝c?銆銆銆銆
  3. 瀵規墍鍒楀悇綾誨伐鍏?杞歡鐨勬帓鍚嶄笉鍒嗗厛鍚庯紝鍏朵腑鏃㈡湁Open source杞歡錛屼篃鏈夊晢涓氫駭鍝併傚浜庡墠鑰咃紝鎴戝皢鎻愪緵涓嬭澆鍦板潃錛屽浜庡悗鑰咃紝鎴戝皢灝介噺鎻愪緵鐩稿叧淇℃伅鐨勫弬鑰冪綉鍧銆?銆銆銆銆
  4. 榪欎喚娓呭崟騫墮潪static鐨勶紝鎵鍒楀伐鍏?杞歡涔熻繙闈炰繚緗椾竾璞★紝濡傛灉浣犳湁濂界殑寤鴻鍜屾兂娉曪紝涔熷彲浠ユ彁渚涖傚鏈夊繀瑕侊紝鎴戜細瀵硅娓呭崟浣滃畾鏈熸洿鏂癪_^

寮鍙戠幆澧?/font>

Turbo c DOS鏃朵唬c璇█寮鍙戠殑緇忓吀宸ュ叿錛岀洰鍓嶉傚悎涓ょ被浜轟嬌鐢細c璇█beginner錛堝挨鍏舵槸瀛︾敓涓鏃忥級錛屽叿鏈夋鏃ф儏鑺傜殑涓撲笟浜哄+錛氾級
Visual C++ 6.0/7.0 紼沖畾鑰屽己澶х殑IDE寮鍙戠幆澧冿紝鍏鋒湁涓板瘜鐨勮皟璇曞姛鑳斤紝瀹氬埗瀹忕殑鍔熻兘涔熸槸鍏朵竴澶х壒鑹層侻icrosoft鐨勭粡鍏鎬箣浣滐紝鍔熻兘寮哄ぇ鑷笉蹇呰█璇淬傞檮甯︾殑涓浜涘伐鍏蜂篃寰堜笉閿欙紝姣斿錛歋py++銆備絾緙栬瘧鍣ㄨ緝涔嬪悓綾伙紝鏀寔c++鏍囧噯鐨勭▼搴︿笉澶熷ソ錛屽挨鍏?.0鍙婁互鍓嶇殑鐗堟湰銆?/font>
BCB Borland鐨凜++ Builder鏄彲浠ヤ笌VC鍖規晫鐨勫彟涓涓姛鑳藉己澶х殑IDE錛岄熷害鍜岀ǔ瀹氭х◢閫婏紝浣嗗c++鏍囧噯鏀寔鐨勭▼搴﹁緝濂姐?/font>
Cygwin Windows騫沖彴涓嬬殑C++緙栬瘧鍣紝鍩轟簬gcc錛屽張瀹屽叏鍏煎Window鐗規湁鐨勪笢瑗匡紝姣斿瀵箇insock鐨勬敮鎸併備粠http://www.cygwin.com鍙互鎵懼埌鏈夊叧Cygwin鐨勮緇嗕俊鎭?/font>
Dev-c++ Windows騫沖彴涓嬶紝涓涓被浼糣C銆丅CB鐨刢++ IDE寮鍙戠幆澧冿紝灞炰簬鍏變韓杞歡銆傜晫闈翰鍒囦紭闆咃紝size涔熶笉澶э紝鍏?.9.x鐗堟湁涓枃璇█鏀寔錛屾棤闇姹夊寲銆傜紪璇戝櫒鍩轟簬gcc錛屽畬鍏ㄦ敮鎸丼TL銆備絾鏄浜庤妯¤緝澶х殑杞歡欏圭洰錛屾亹鎬曢毦浠ヨ儨浠匯傚彲浠ヤ粠:http://www.bloodshed.net/dev/devcpp.html鎵懼埌鏈夊叧Dev-c++鐨勬湁鍏充俊鎭?/font>
Source Insight 鏈夌潃鍜孌ev c++涓鏍鋒紓浜殑鐣岄潰錛屾彁渚涗唬鐮佺殑緙栬緫鍜屽療鐪嬪姛鑳斤紝鍏鋒湁涓板瘜鐨勮娉曞姞浜姛鑳斤紝鍙互鍍廣C涓鏍瘋嚜鍔ㄥ脊鍑烘垚鍛樺嚱鏁扮殑鎻愮ず錛屽茍鍏鋒湁蹇熸柟渚跨殑鍑芥暟璺寵漿鍔熻兘錛堜絾鏄煩杞熷害浼間箮鏈夌偣鎱級銆傚彧鏄粯璁よ緗笉閫傚悎鏃訛紝闇瑕佷粩緇嗙殑璋冩暣鍜屼慨鏀廣傛棤娉曟煡鎵劇粡typedef涔嬪悗鐨勫悕瀛椼?/font>

杈呭姪

Visual Assist VC IDE鐜涓嬬殑杈呭姪緙栫▼宸ュ叿錛岃兘璇嗗埆鍚勭鍏抽敭瀛椼佸嚱鏁般佹垚鍛樺彉閲忥紝鑷姩緇欏嚭tip錛屽茍鑷姩鏇存澶у皬鍐欓敊璇紝鏍囩ず鎷煎啓閿欒絳夈傛槸VC寮鍙戠殑鑹ソ浼翠荊銆?
Understand for C++ 涓嬈綾/c++IDE緙栫▼鐨勮緟鍔╁伐鍏鳳紝鏀寔鍙嶅悜宸ョ▼錛屼唬鐮佸鍚戝拰涓浜涚粺璁″姛鑳斤紝浠巋ttp://www.scitools.com鍙互鎵懼埌鏈夊叧Understand for C++鐨勮緇嗕俊鎭?

紼嬪簭緙栬緫鍣?/font>

EditPlus 涓嬈懼緢涓嶉敊鐨勬枃鏈紪杈戣蔣浠訛紝鍔熻兘寮哄ぇ鍗村張鍗佸垎杞誨閥銆傛敮鎸佷笉鍚岃璦鐨勮娉曞姞浜紝榪樻湁Project緇勭粐鍔熻兘錛屽叿鏈変赴瀵岀殑鑷畾涔夊姛鑳姐傞氳繃璁劇疆User Tool錛屽彲浠ュ拰鍏朵粬璇█緙栬瘧鍣ㄧ粨鍚堬紝褰㈡垚涓涓畝鍗曠殑IDE銆?/font>
Ultra Edit 鍔熻兘鍜孍ditPlus鐩稿綋錛岄氳繃鑴氭湰鏂囦歡鎻愪緵鐨勯厤緗姛鑳藉彲浠ュ畾鍒剁紪杈戠幆澧冿紝浣嗚嚜6.0鐗堜互鍚庝竴鐩存病澶氬ぇ鍙樺寲錛屽氨緙栫▼鑰岃█錛岃嚜瀹氫箟璁劇疆娌℃湁EditPlus鏂逛究銆?
EMACS 鍏鐨勪笘鐣屼笂鍔熻兘鏈澶氾紝鏈澶嶆潅鐨勬枃鏈紪杈戝櫒錛屽叾瀹炰篃鍙互褰撲綔紼嬪簭鍛樼敤鐨勭紪杈戝櫒銆?
Visual Slick Edit 涓涓姛鑳藉己澶х殑紼嬪簭鍛樼敤緙栬緫鍣ㄣ傛渶鍊煎緱涓鎻愮殑鏄叾瀹氬埗鍔熻兘錛屽緢濂界敤錛屽彲浠ュ拰EMACS鐩告瘮銆傝嚜甯︿簡涓濂桺CODE瑙i噴鍣紝鐢╟鐨勮娉曪紝榪樺彲浠ユ寕鎺ュ姩鎬佸簱銆傞厤鍚坢ingw涓璧蜂嬌鐢ㄥ緢鏂逛究銆備粠http://www.slickedit.com鍙互鎵懼埌鏈夊叧SlickEdit鐨勮緇嗕俊鎭?/font>
IQEdit 鍏ㄥ姛鑳界殑紼嬪簭鍛樼敤緙栬緫鍣紝鐣岄潰寰堟紓浜紝浠巋ttp://pwksoftware.com鍙互鎵懼埌鏈夊叧IQEdit鐨勮緇嗕俊鎭?/font>

UML/寤烘ā

Rational Rose 寮哄ぇ鐨勫緩妯″伐鍏鳳紝鏃╁凡"瀹跺柣鎴鋒檽"錛屽姛榪囪嚜鐒朵笉蹇呭鍔犺瘎璇翠簡銆備粠http://www.rationalsoftware.com.cn鍙互鎵懼埌鏈夊叧Rational Rose鐨勮緇嗕俊鎭?/font>
Visual Modeler MS Visual Studio 6.0鎵闄勭殑灝忓伐鍏楓傚睘浜嶳ational鍜孧icroSoft鍚堜綔鐨勬垬鐣ヤ駭鍝侊紝鏄疪ose鐨勭畝鍖栫増銆?/font>
Visio Microsoft鐨勫緩妯″伐鍏鳳紝鎰熻鏇翠漢鎬у寲涓浜涳紝浣嗗姛鑳芥病鏈塕ose澶氥佸己銆佷笓錛屾敮鎸佹鍚戠殑浠g爜鐢熸垚錛屼互鍙婂浠g爜鐨勫弽鍚戝伐紼嬨?/font>
Together 鍙︿竴嬈懼姛鑳藉己澶х殑寤烘ā宸ュ叿錛岀敤java緙栧啓鑰屾垚錛屽彛紕戜笉閿欙紝涓嶈繃閫熷害紼嶇◢鎱簡涓浜涖備粠http://www.togethersoft.com鍙互鎵懼埌鏈夊叧Togather鐨勮緇嗕俊鎭紝鍙﹀錛屼互涓嬬綉鍧鎻愪緵浜嗕竴涓湁鍏砊ogether鐨勬暀紼嬶細
http://www.cc.puv.fi/~tka/kurssit/Tietojarjestelmien_suunnittelu/together/TCCGuide6
Visual UML 鏀寔澶氱璇█綾誨瀷錛屾瘮濡傦細VC銆乂B銆丏ELPHI銆丆ORBA IDL絳夛紝鍙互鐩存帴浠嶶ML璁捐鍥劇敓鎴愪唬鐮侊紝綆鍗曟槗鐢紝瀹屽叏閫傚悎Personal use錛岀晫闈篃寰堟竻鐖姐備粠http://www.visualObject.com鍙互鎵懼埌鏈夊叧Visual UML鐨勮緇嗕俊鎭?/font>
SmartDraw 閫氱敤鍥捐〃鍒朵綔杞歡錛屽彲浠ョ敤鏉ュ埗浣滅粍緇囨満鏋勫浘銆佹祦紼嬪浘銆佺粺璁″浘琛ㄧ瓑銆傞殢甯︽湁鍥懼簱錛屽熀鏈弧瓚沖埗浣滃悇綾誨浘琛ㄧ殑闇瑕併備粠http://www.smartdraw.com鍙互鎵懼埌鏈夊叧SmartDraw鐨勮緇嗕俊鎭?/font>
PlayCase 鍥戒駭闈㈠悜瀵硅薄鐨勫緩妯¤蔣浠訛紝鍏煎UML鍜孖DEF錛岃交閲忕駭杞歡錛屽彧鏄晫闈㈢湅璧鋒潵鏈夌偣綆鏈達紝涔冩槸楂樺睍鍏堢敓鐢―elphi瀹屾垚鐨勩?/font>

鐗堟湰鎺у埗

ClearCase Rational鐨勭増鏈帶鍒剁鐞嗚蔣浠訛紝鍔熻兘寮哄ぇ錛屽彲浠ユ帶鍒跺縐嶇被鍨嬬殑鏂囨。錛岀敋鑷沖寘鎷琖ord銆丒xcel銆丳owerPoint鏂囨。銆備絾浣跨敤澶嶆潅錛屼笉鏄撲笂鎵嬶紝涓斾笉鏄厤璐硅蔣浠躲?/font>
CVS 涓哄熀浜嶹eb鐨勫垎甯冨紡鍗忓悓寮鍙戞彁渚涗簡鐗堟湰鎺у埗綆$悊鎵嬫錛屼笖鏄厤璐硅蔣浠訛紝鍙互閫氳繃鑴氭湰瀹氬埗鍔熻兘銆備絾鍦ㄦ潈闄愭帶鍒舵柟闈㈠姛鑳界浉瀵硅緝寮便?/font>
VSS 寰蔣鐨勭増鏈帶鍒剁鐞嗗伐鍏鳳紝鍔熻兘鐩稿綆鍗曪紝閫傚悎浜庡皬鍨嬪洟闃熷紑鍙戯紝灝嗗叾鏁村悎鍒板井杞殑鍏朵粬寮鍙戝伐鍏蜂腑錛屼嬌鐢ㄨ搗鏉ュ崄鍒嗘柟渚褲?/font>
SourceOffSite 寰蔣涓哄紑鍙戜漢鍛樻彁渚涚殑榪滅▼璁塊棶VSS鏁版嵁搴撶殑宸ュ叿錛屼嬌鏁版嵁搴撳緱浠ヨ繙紼嬫洿鏂幫紝浠ユ敮鎸佽繙紼嬪姙鍏?/font>

鍏朵粬鐨勭増鏈鐞嗗伐鍏瘋繕鍖呮嫭錛歅VCS銆乂CS銆丷CS絳夈?

XML

expat 鐢ㄤ簬璇誨彇鍜屽鐞哫ML鏂囨。鐨刢鍑芥暟搴擄紝鏈鍒濇槸James Clark鐨勪釜浜轟綔鍝侊紝綆鍗曡交宸э紝涓旈熷害蹇備絾鏀寔鐨勭紪鐮佹柟寮忔湁闄愶紝鏈閬楁喚鐨勬槸涓嶆敮鎸佷腑鏂囥備粠http://expat.sourceforge.net鍙互鎵懼埌鏈夊叧expat鐨勮緇嗕俊鎭?/font>
xml4c IBM鐨刋ML Parser錛岀敤c++璇█鍐欏氨錛屽姛鑳借秴綰у己澶с傚彿縐版敮鎸佸杈?00縐嶅瓧絎︾紪鐮侊紝鑳藉鏀寔涓枃錛岄傚悎浜庡ぇ瑙勬ā鐨剎ml搴旂敤銆傝嫢鍙槸寰堝皬鑼冨洿鐨勫簲鐢紝鍒欓潪鏈浣抽夋嫨錛屾瘯绔燂紝浣犻渶瑕?鑳岃礋"綰?2M宸﹀彸鐨刣ll鐨勬矇閲嶈礋鎷呫備粠http://www.alphaworks.ibm.com/tech/xml4c鍙互鎵懼埌鏈夊叧xml4c鐨勮緇嗕俊鎭?
Xerces c++ Apache鐨刋ML欏圭洰錛屽悓鏍鋒槸c++瀹炵幇錛屾潵婧愪簬IBM鐨剎ml4c錛屽洜姝ょ紪紼嬫帴鍙d篃鏄拰xml4c涓鑷寸殑銆備絾鏄洰鍓嶅彧鏀寔灝戞暟鐨勫瓧絎︾紪鐮侊紝濡侫SCII錛孶TF-8錛孶TF-16絳夛紝涓嶈兘澶勭悊鍖呭惈涓枃瀛楃鐨刋ML鏂囨。銆備粠http://xml.apache.org/xerces-c鍙互鎵懼埌鏈夊叧Xerces c++鐨勮緇嗕俊鎭?/font>

嫻嬭瘯

CppUnit 涓涓猚++鐨勫崟鍏冩祴璇曟鏋訛紝鍙互閫氳繃媧劇敓嫻嬭瘯綾葷殑鏂瑰紡錛屽畾鍒跺叿浣撶殑嫻嬭瘯鏂規銆倄Unit瀹舵棌鐨勪竴鍛橈紝浠嶫Unit縐繪鑰屾潵錛孞Unit鏄疛ava璇█鐨勫崟鍏冩祴璇曟鏋躲備粠http://cppuint.sourceforge.net鍙互鎵懼埌鏈夊叧CppUint鐨勮緇嗕俊鎭?/font>
Rational ROBOT Rational鐨勮嚜鍔ㄥ寲嫻嬭瘯宸ュ叿錛岄氳繃緙栧啓鑴氭湰鐨勬柟寮忔彁渚涜嚜鍔ㄥ寲嫻嬭瘯鐗規с傚叾GUI鏂瑰紡鐨勮剼鏈綍鍒跺姛鑳斤紝鏈夊姪浜庡GUI杞歡榪涜鍔熻兘嫻嬭瘯錛涘叾VU鏂瑰紡鐨勮剼鏈綍鍒跺姛鑳斤紝鏈夊姪浜庢祴璇曟煇浜涜蔣浠剁殑鏁版嵁閫氳鍔熻兘銆?/font>
Rational Purify 鍚屾牱鏄疪ational鐨勮嚜鍔ㄥ寲嫻嬭瘯宸ュ叿錛屼笉闇瑕佽嫻嬬▼搴忕殑婧愪唬鐮侊紝鍙互鐢ㄦ潵媯鏌ュ唴瀛樿闂敊璇乄indows API璋冪敤閿欒絳夛紝浠ュ畬鎴愯蔣浠剁殑鍙潬鎬ф祴璇曪紝灞炰簬鐧界洅嫻嬭瘯銆?/font>

鍏朵粬鐨凴ational嫻嬭瘯宸ュ叿榪樺寘鎷細TestFactory銆丳ureCoverage銆乀estManager絳夈?

鏃ュ織

log4cpp 涓涓敤浜庢棩蹇楄褰曠殑c++鍑芥暟搴擄紝鍙互灝嗗唴瀹逛互瀹氬埗鐨勬柟寮忚褰曞埌涓嶅悓鐨勭洰鐨勫湴錛屾瘮濡傦細鏂囦歡銆佹帶鍒跺彴銆乻yslog絳夛紝鍚屾椂榪樺彲浠ラ氳繃鎺у埗璁板綍綰у埆鏉ュ睆钄芥帀鏌愪簺鏃犲叧璁板綍銆備粠http://log4cpp.sourceforge.net鍙互鎵懼埌鏈夊叧log4cpp鐨勮緇嗕俊鎭?/font>

娉ㄩ噴

Doc++ 娉ㄩ噴鏂囨。鐢熸垚宸ュ叿錛屾牴鎹簮紼嬪簭涓殑鏂囨。娉ㄩ噴錛屽彲浠ヨ緭鍑篢eX鍜孒TML鏍煎紡鐨勬枃妗c傞櫎浜嗘敮鎸乧/c++璇█澶栵紝榪樻敮鎸両DL鍜宩ava銆備粎鎻愪緵鍛戒護琛屼嬌鐢ㄦ柟寮忋備粠http://docpp.sourceforge.net鍙互鎵懼埌鏈夊叧Doc++鐨勮緇嗕俊鎭?/font>
Doxygen 娉ㄩ噴鏂囨。鐢熸垚宸ュ叿錛岃緝涔婦oc++鍔熻兘鏇翠負榻愬叏錛屽彲浠ョ敓鎴愬寘鎷琀TML銆丳DF銆丷TF鍦ㄥ唴鐨勫縐嶆牸寮忕殑鏂囨。錛屽茍鏈塆UI鐣岄潰錛岄櫎浜嗘敮鎸乧/c++璇█澶栵紝榪樻敮鎸両DL銆乯ava銆丳HP銆乧#絳夈備粠 http://www.stack.nl/~dimitri/doxygen 鍙互鎵懼埌鏈夊叧Doxygen鐨勮緇嗕俊鎭?/font>



]]>
C/C++闅忕瑪 涔?澶存枃浠朵竴瑙?(杞澆)http://m.shnenglu.com/mumutou/archive/2006/12/28/16937.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Thu, 28 Dec 2006 05:50:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/28/16937.htmlhttp://m.shnenglu.com/mumutou/comments/16937.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/28/16937.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/16937.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16937.html C 銆佷紶緇?span lang="EN-US"> C++

#include <assert.h>// 璁懼畾鎻掑叆鐐?/span>

#include <ctype.h> // 瀛楃澶勭悊

#include <errno.h> // 瀹氫箟閿欒鐮?/span>

#include <float.h> // 嫻偣鏁板鐞?/span>

#include <fstream.h> //鏂囦歡杈撳叆錛忚緭鍑?/span>

#include <iomanip.h> //鍙傛暟鍖栬緭鍏ワ紡杈撳嚭

#include <iostream.h> //鏁版嵁嫻佽緭鍏ワ紡杈撳嚭

#include <limits.h>// 瀹氫箟鍚勭鏁版嵁綾誨瀷鏈鍊煎父閲?/span>

#include <locale.h>// 瀹氫箟鏈湴鍖栧嚱鏁?/span>

#include <math.h> //瀹氫箟鏁板鍑芥暟

#include <stdio.h> // 瀹氫箟杈撳叆錛忚緭鍑哄嚱鏁?/span>

#include <stdlib.h>// 瀹氫箟鏉傞」鍑芥暟鍙婂唴瀛樺垎閰嶅嚱鏁?/span>

#include <string.h>// 瀛楃涓插鐞?/span>

#include <strstrea.h> //鍩轟簬鏁扮粍鐨勮緭鍏ワ紡杈撳嚭

#include <time.h> //瀹氫箟鍏充簬鏃墮棿鐨勫嚱鏁?/span>

#include <wchar.h> // 瀹藉瓧絎﹀鐞嗗強杈撳叆錛忚緭鍑?/span>

#include <wctype.h>// 瀹藉瓧絎﹀垎綾?/span>

//////////////////////////////////////////////////////////////////////////

鏍囧噯 C++銆錛堝悓涓婄殑涓嶅啀娉ㄩ噴錛?/span>

#include <algorithm> //STL 閫氱敤綆楁硶

#include <bitset> //STL 浣嶉泦瀹瑰櫒

#include <cctype>

#include <cerrno>

#include <clocale>

#include <cmath>

#include <complex> // 澶嶆暟綾?/span>

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <ctime>

#include <deque> //STL 鍙岀闃熷垪瀹瑰櫒

#include <exception> //寮傚父澶勭悊綾?/span>

#include <fstream>

#include <functional> //STL 瀹氫箟榪愮畻鍑芥暟錛堜唬鏇胯繍綆楃錛?/span>

#include <limits>

#include <list>//STL 綰挎у垪琛ㄥ鍣?/span>

#include <map> //STL 鏄犲皠瀹瑰櫒

#include <iomanip>

#include <ios> // 鍩烘湰杈撳叆錛忚緭鍑烘敮鎸?/span>

#include <iosfwd> //杈撳叆錛忚緭鍑虹郴緇熶嬌鐢ㄧ殑鍓嶇疆澹版槑

#include <iostream>

#include <istream> // 鍩烘湰杈撳叆嫻?/span>

#include <ostream> // 鍩烘湰杈撳嚭嫻?/span>

#include <queue> //STL 闃熷垪瀹瑰櫒

#include <set> //STL 闆嗗悎瀹瑰櫒

#include <sstream> // 鍩轟簬瀛楃涓茬殑嫻?/span>

#include <stack> //STL 鍫嗘爤瀹瑰櫒

#include <stdexcept> //鏍囧噯寮傚父綾?/span>

#include <streambuf> //搴曞眰杈撳叆錛忚緭鍑烘敮鎸?/span>

#include <string> //瀛楃涓茬被

#include <utility> //STL 閫氱敤妯℃澘綾?/span>

#include <vector> //STL 鍔ㄦ佹暟緇勫鍣?/span>

#include <cwchar>

#include <cwctype>

using namespace std;

//////////////////////////////////////////////////////////////////////////

C99 澧炲姞

#include <complex.h> // 澶嶆暟澶勭悊

#include <fenv.h>// 嫻偣鐜

#include <inttypes.h>// 鏁存暟鏍煎紡杞崲

#include <stdbool.h> // 甯冨皵鐜

#include <stdint.h> //鏁村瀷鐜

#include <tgmath.h> //閫氱敤綾誨瀷鏁板瀹?/span>



]]>
C/C++闅忕瑪 涔媘alloc/free 鍜宯ew/delete鍖哄埆http://m.shnenglu.com/mumutou/archive/2006/12/28/16927.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Thu, 28 Dec 2006 02:36:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/28/16927.htmlhttp://m.shnenglu.com/mumutou/comments/16927.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/28/16927.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/16927.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16927.htmlmalloc/free ,new/delete
鐩鎬俊澶у瀵逛笂闈袱涓懡浠ら兘涓嶉粯璁?br />澶у榪欎袱涓懡浠ゅ叾瀹炴槸鍙堝尯鍒殑
棣栧厛
1.malloc 涓巉ree 鏄疌++/C 璇█鐨勬爣鍑嗗簱鍑芥暟錛宯ew/delete 鏄疌++鐨勮繍綆楃
2.涓嶈兘澶熸妸鎵ц鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟鐨勪換鍔″己鍔犱簬malloc/free
3.涓よ呴兘鍙互浣跨敤寮傚父鍑洪敊鍑芥暟,涓嶈繃涓漢瑙夊緱malloc/free瀵逛簬寮傚父鍑洪敊澶勭悊鏇村姞鏂逛究
malloc/free榪欎釜鍛戒護鍙槸瀵瑰唴瀛樻搷浣?綰唴瀛樻搷浣滃嚱鏁?br />鑰宯ew/delete鍛戒護浼氭墽琛屾瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟
鎵浠ユ垜鐨勬剰瑙佹槸:
瀵逛簬闈炵郴緇熷唴閮ㄦ暟鎹殑璇?灝介噺浣跨敤new/delete
褰撶劧濡傛灉鏄嚜宸辨柊寤虹被鐨勮瘽,涔熶嬌鐢╪ew/delete,涓嶇劧鎬庝箞璋冪敤鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟閭?
瀵逛簬緋葷粺鍐呴儴鍑芥暟鐨勮瘽,浣跨敤malloc/free
int *p = (int*)malloc(sizeof(int)*num);
class A
{
聽聽聽A();
聽聽聽~A();
};

A *a = new A;
new涔熸湁涓涓ソ澶?鍙互澶勭悊涓嶅悓鐨勬瀯閫犲嚱鏁?br />Example Code:
class A
{
聽聽聽A();
聽聽 ~A();
}
A *a = new A;
鍦ㄧ被澹版槑縐嶅姞鍏?br />A(int x,int y);
灝卞彲浠ヤ嬌鐢?br />A *a聽= new A(1,2);



]]>
C++闅忕瑪 涔?鎸囬拡鍒嗘瀽http://m.shnenglu.com/mumutou/archive/2006/12/28/16926.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Thu, 28 Dec 2006 02:22:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/28/16926.htmlhttp://m.shnenglu.com/mumutou/comments/16926.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/28/16926.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/16926.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16926.html 鍦–++閲岄潰,鎸囬拡鏄竴縐嶆瘮杈冮夯鐑︾殑鎿嶄綔,浣嗘槸鎴戜滑鍙堜笉寰椾笉鐢?鍥犱負浠栫粰鎴戜滑緙栫▼浠ュ緢澶х殑鐏墊椿鎬?br />涓嬮潰鎴戣浠ヤ笅鎸囬拡浣滀負鍑芥暟鍙傛暟鏃剁殑闂
鍦ㄥ嚱鏁板弬鏁頒腑,緙栬瘧鍣ㄦ繪槸瑕佷負鍑芥暟鐨勬瘡涓弬鏁板埗浣滀復鏃跺壇鏈紝鎸囬拡
鍙傛暟p 鐨勫壇鏈槸 _p錛岀紪璇戝櫒浣?_p = p 銆傚鏋滃嚱鏁頒綋鍐呯殑紼嬪簭淇敼浜哶p 鐨勫唴瀹癸紝灝卞鑷?br />鍙傛暟p 鐨勫唴瀹逛綔鐩稿簲鐨勪慨鏀廣傝繖灝辨槸鎸囬拡鍙互鐢ㄤ綔杈撳嚭鍙傛暟鐨勫師鍥犮傚湪鏈緥涓紝_p 鐢寵
浜嗘柊鐨勫唴瀛橈紝鍙槸鎶奯p 鎵鎸囩殑鍐呭瓨鍦板潃鏀瑰彉浜嗭紝浣嗘槸p 涓濇鏈彉銆?br />浠ヤ笂鏄灄閿愬崥澹湪楂樿川閲廋++緙栫▼涓殑鎻忚堪
涓嬮潰鎴戜滑緇撳悎鎻忚堪緇欏嚭璋冭瘯CODE
聽Example Code:
void GetMemory(char *p,int num)
{
聽p = (char*)malloc(sizeof(char)*num);
//聽return
}

void main()
{
聽char *str = NULL;
聽GetMemory(str,100);
聽strcpy(str,"Hello World");//鍑洪敊
}
棣栧厛鎴戜滑鍏堢湅鐪媋sm
004010B8聽聽 mov聽聽聽聽聽聽聽聽 dword ptr [ebp-4],0
004010BF聽聽 push聽聽聽聽聽聽聽 64h
004010C1聽聽 mov聽聽聽聽聽聽聽聽 eax,dword ptr [ebp-4]
004010C4聽聽 push聽聽聽聽聽聽聽 eax
004010C5聽聽 call聽聽聽聽聽聽聽 @ILT+50(GetMemory) (00401037)
str 鍦板潃:12FF7C
鍏跺壇鏈湴鍧:12FF28
鍦ㄥ瓨鍏ュ弬鏁扮殑鏃跺?鍚屾椂閮芥寚鍚?0 00 00 00
鍦ㄦ墽琛宲 = (char*)malloc(sizeof(char)*num);涔嬪悗
12FF28鎸囧悜鐨勫唴瀹瑰彉鎴愪簡20 1C 43 00浜?
鏋楅攼鍗氬+鍦ㄨ繖杈圭殑鎰忔濇槸鍙敤鎸囧悜鎸囬拡鐨勬寚閽?榪欑鏂規硶鎴戜滑鍦ㄧ浜岀鏂規硶縐嶄粙緇?
涓嬮潰緇欏嚭鎴戠殑涓縐嶇湅娉?澶у瑙夊緱濂戒笉濂?br />鎴戠殑鏂規硶:
char *GetMemory(char *p,int num)
{
聽p = (char*)malloc(sizeof(char)*num);
聽return p;
}

void main()
{
聽char *str = NULL;
聽str = GetMemory(str,100);
聽strcpy(str,"Hello World");
聽cout<<str<<endl;
}
鍙互綆鍖栦負:
char *GetMemory(int num)
{
聽char *p = (char*)malloc(sizeof(char)*num);
聽return p;
}

void main()
{
聽char *str = NULL;
聽str = GetMemory(100);
聽strcpy(str,"Hello World");
聽cout<<str<<endl;
}

鏋楅攼鍗氬+鐨勭湅娉?
void GetMemory(char **p,int num)
{
聽聽聽*p = (char*)malloc(sizeof(char)*num);
}
void main()
{
聽聽聽char *str = NULL;
聽聽聽GetMemory(&str,100);
聽聽聽strcpy(str,"Hello,World");
聽聽聽cout <<str<<endl;
}





]]>
C++ 闅忕瑪 涔?搴?-杞?鏀惰棌) http://m.shnenglu.com/mumutou/archive/2006/12/25/16843.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Mon, 25 Dec 2006 08:06:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/25/16843.htmlhttp://m.shnenglu.com/mumutou/comments/16843.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/25/16843.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/16843.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16843.html 鍦–++涓紝搴撶殑鍦頒綅鏄潪甯擱珮鐨勩侰++涔嬬埗 Bjarne Stroustrup鍏堢敓澶氭琛ㄧず浜嗚璁″簱鏉ユ墿鍏呭姛鑳借濂借繃

璁捐鏇村鐨勮娉曠殑璦璁恒傜幇瀹炰腑錛孋++鐨勫簱闂ㄧ被綣佸錛岃В鍐崇殑闂涔熸槸鏋佸叾騫挎硾錛屽簱浠庤交閲忕駭鍒伴噸閲忕駭

鐨勯兘鏈夈備笉灝戦兘鏄浜虹溂鐣屽ぇ寮錛屼害鎴栨槸鏈涜岀敓鍙圭殑鎬濈淮鏉頒綔銆傜敱浜庡簱鐨勬暟閲忛潪甯稿簽澶э紝鑰屼笖闄愪簬絎旇?/font>

姘村鉤錛屽叾涓緢澶氬茍涓嶄簡瑙c傛墍浠ユ枃涓墍鎻愮殑涓浜涘簱閮芥槸姣旇緝钁楀悕鐨勫ぇ鍨嬪簱銆?/font>

鏍囧噯搴?/font>

鏍囧噯搴撲腑鎻愪緵浜咰++紼嬪簭鐨勫熀鏈鏂姐傝櫧鐒禖++鏍囧噯搴撻殢鐫C++鏍囧噯鎶樿吘浜嗚澶氬勾錛岀洿鍒版爣鍑嗙殑鍑哄彴鎵嶆

寮忓畾鍨嬶紝浣嗘槸鍦ㄦ爣鍑嗗簱鐨勫疄鐜頒笂鍗村緢浠や漢嬈f叞寰楃湅鍒板縐嶅疄鐜幫紝騫朵笖宸茶瀹炶返璇佹槑涓烘湁宸ヤ笟綰у埆寮哄害鐨?/font>

浣充綔銆?/font>

1銆伮犅?Dinkumware C++ Library

聽聽聽聽聽聽聽聽聽鍙傝冪珯鐐癸細 http://www.dinkumware.com

P.J. Plauger緙栧啓鐨勯珮鍝佽川鐨勬爣鍑嗗簱銆侾.J. Plauger鍗氬+鏄疍r. Dobb's紼嬪簭璁捐鏉板嚭濂栫殑鑾峰緱鑰呫傚叾緙?/font>

鍐欑殑搴撻暱鏈熻Microsoft閲囩敤錛屽茍涓旀渶榪態orland涔熷彇寰椾簡鍏禣EM鐨刲icense錛屽湪鍏禖/C++鐨勪駭鍝佷腑閲囩敤

Dinkumware鐨勫簱銆?/font>

2銆伮犅?RogueWave Standard C++ Library

聽聽聽聽聽聽聽聽聽鍙傝冪珯鐐癸細 http://www.roguewave.com/

榪欎釜搴撳湪Borland C++ Builder鐨勬棭鏈熺増鏈腑鏇劇粡琚噰鐢紝鍚庢潵琚叾浠栫殑搴撶粰鏇挎崲浜嗐傜瑪鑰呬笉鎺ㄨ崘 銆?/font>

3銆丼GI STL

聽聽聽聽聽聽聽聽聽鍙傝冪珯鐐癸細 http://www.roguewave.com/

SGI鍏徃鐨凜++鏍囧噯妯$増搴撱?/font>

4銆丼TLport

聽聽聽聽聽聽聽聽聽鍙傝冪珯鐐癸細 http://www.stlport.org

SGI STL搴撶殑璺ㄥ鉤鍙板彲縐繪鐗堟湰銆?/font>

鍑嗘爣鍑嗗簱鈥斺擝oost

Boost搴撴槸涓涓粡榪囧崈閿ょ櫨鐐箋佸彲縐繪銆佹彁渚涙簮浠g爜鐨凜++搴擄紝浣滀負鏍囧噯搴撶殑鍚庡錛屾槸C++鏍囧噯鍖栬繘紼嬬殑

鍙戝姩鏈轟箣涓銆?Boost搴撶敱C++鏍囧噯濮斿憳浼氬簱宸ヤ綔緇勬垚鍛樺彂璧鳳紝鍦–++紺懼尯涓獎鍝嶇敋澶э紝鍏舵垚鍛樺凡榪?000浜?/font>

銆?Boost搴撲負鎴戜滑甯︽潵浜嗘渶鏂般佹渶閰楓佹渶瀹炵敤鐨勬妧鏈紝鏄笉鎶樹笉鎵g殑鈥滃噯鈥濇爣鍑嗗簱銆?/font>

Boost涓瘮杈冩湁鍚嶆皵鐨勬湁榪欎箞鍑犱釜搴擄細

Regex
姝e垯琛ㄨ揪寮忓簱

Spirit
LL parser framework錛岀敤C++浠g爜鐩存帴琛ㄨ揪EBNF

Graph
鍥劇粍浠跺拰綆楁硶

Lambda
鍦ㄨ皟鐢ㄧ殑鍦版柟瀹氫箟鐭皬鍖垮悕鐨勫嚱鏁板璞★紝寰堝疄鐢ㄧ殑functional鍔熻兘

concept check
媯鏌ユ硾鍨嬬紪紼嬩腑鐨刢oncept

Mpl
鐢ㄦā鏉垮疄鐜扮殑鍏冪紪紼嬫鏋?/font>

Thread
鍙Щ妞嶇殑C++澶氱嚎紼嬪簱

Python
鎶奀++綾誨拰鍑芥暟鏄犲皠鍒癙ython涔嬩腑

Pool
鍐呭瓨姹犵鐞?/font>

smart_ptr
5涓櫤鑳芥寚閽堬紝瀛︿範鏅鴻兘鎸囬拡蹇呰錛屼竴浠戒笉閿欑殑鍙傝冩槸鏉ヨ嚜CUJ鐨勬枃绔狅細

Smart Pointers in Boost,鍝︼紝榪欑瘒鏂囩珷鍙互鏌ュ埌錛孋UJ鏄彁渚涘湪綰挎祻瑙堢殑銆備腑鏂囩増瑙佺瑪鑰呭湪銆奃r.

Dobb's Journal杞歡鐮斿彂鏉傚織銆嬬7杈戜笂鐨勮瘧鏂囥?/font>


Boost鎬諱綋鏉ヨ鏄疄鐢ㄤ環鍊煎緢楂橈紝璐ㄩ噺寰堥珮鐨勫簱銆傚茍涓旂敱浜庡叾瀵硅法騫沖彴鐨勫己璋冿紝瀵規爣鍑咰++鐨勫己璋冿紝鏄紪

鍐欏鉤鍙版棤鍏籌紝鐜頒唬C++鐨勫紑鍙戣呭繀澶囩殑宸ュ叿銆備絾鏄疊oost涓篃鏈夊緢澶氭槸瀹為獙鎬ц川鐨勪笢瑗匡紝鍦ㄥ疄闄呯殑寮鍙戜腑

瀹炵敤闇瑕佽皚鎱庛傚茍涓斿緢澶欱oost涓殑搴撳姛鑳藉牚縐板璇█鍔熻兘鐨勬墿灞曪紝鍏舵瀯閫犵敤灝界簿宸х殑鎵嬫硶錛屼笉瑕佽錘鐒?/font>

鐨勮姳璐規椂闂寸爺璇匯侭oost鍙﹀涓闈紝姣斿Graph榪欐牱鐨勫簱鍒欐槸鍏鋒湁宸ヤ笟寮哄害錛岀粨鏋勮壇濂斤紝闈炲父鍊煎緱鐮旇鐨?/font>

綺懼搧浠g爜錛屽茍涓斾篃鍙互鏀懼績鐨勫湪浜у搧浠g爜涓澶氬埄鐢ㄣ?/font>

聽聽聽聽聽聽聽聽聽鍙傝冪珯鐐癸細 http://www.boost.org
聽聽聽聽聽聽聽聽聽錛堝浗鍐呴暅鍍忥細 http://www.c-view.org/tech/lib/boost/index.htm 錛?/font>

GUI

鍦ㄤ紬澶欳++鐨勫簱涓紝GUI閮ㄥ垎鐨勫簱綆楁槸姣旇緝綣佽崳錛屼篃姣旇緝寮曚漢娉ㄧ洰鐨勩傚湪瀹為檯寮鍙戜腑錛孏UI搴撶殑閫夋嫨涔熸槸

闈炲父閲嶈鐨勪竴浠朵簨鎯咃紝涓嬮潰鎴戜滑緇艱堪涓涓嬪彲閫夋嫨鐨凣UI搴擄紝鍚勮嚜鐨勭壒鐐逛互鍙婄浉鍏沖伐鍏風殑鏀寔銆?/font>

1銆伮犅?MFC

澶у悕榧庨紟鐨勫井杞熀紜綾誨簱錛圡icrosoft Foundation Class錛夈傚ぇ鍑″榪嘨C++鐨勪漢閮藉簲璇ョ煡閬撹繖涓簱銆傝櫧

鐒朵粠鎶鏈搴﹁錛孧FC鏄笉澶ф紓浜殑錛屼絾鏄畠鏋勫緩浜嶹indows API 涔嬩笂錛岃兘澶熶嬌紼嬪簭鍛樼殑宸ヤ綔鏇村鏄?緙?/font>

紼嬫晥鐜囬珮錛屽噺灝戜簡澶ч噺鍦ㄥ緩绔?Windows 紼嬪簭鏃跺繀欏葷紪鍐欑殑浠g爜錛屽悓鏃跺畠榪樻彁渚涗簡鎵鏈変竴鑸?C++ 緙栫▼鐨?/font>

浼樼偣錛屼緥濡傜戶鎵垮拰灝佽銆侻FC 緙栧啓鐨勭▼搴忓湪鍚勪釜鐗堟湰鐨刉indows鎿嶄綔緋葷粺涓婃槸鍙Щ妞嶇殑錛屼緥濡傦紝鍦?

Windows 3.1涓嬬紪鍐欑殑浠g爜鍙互寰堝鏄撳湴縐繪鍒?Windows NT 鎴?Windows 95 涓娿備絾鏄湪鏈榪戝彂灞曚互鍙?/font>

瀹樻柟鏀寔涓婃棩娓愬娍寰?/font>

2銆伮犅?QT聽聽聽聽
聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細http://www.trolltech.com/

Qt鏄疶rolltech鍏徃鐨勪竴涓騫沖彴鐨凜++鍥懼艦鐢ㄦ埛鐣岄潰搴旂敤紼嬪簭妗嗘灦銆傚畠鎻愪緵緇欏簲鐢ㄧ▼搴忓紑鍙戣呭緩绔嬭壓鏈?/font>

綰х殑鍥懼艦鐢ㄦ埛鐣岄潰鎵闇鐨勬墍鐢ㄥ姛鑳姐俀t鏄畬鍏ㄩ潰鍚戝璞$殑寰堝鏄撴墿灞曪紝騫朵笖鍏佽鐪熸鍦扮粍浠剁紪紼嬨傝嚜浠?/font>

1996騫存棭浜涙椂鍊欙紝Qt榪涘叆鍟嗕笟棰嗗煙錛屽畠宸茬粡鎴愪負鍏ㄤ笘鐣岃寖鍥村唴鏁板崈縐嶆垚鍔熺殑搴旂敤紼嬪簭鐨勫熀紜銆俀t涔熸槸嫻?/font>

琛岀殑Linux妗岄潰鐜KDE 鐨勫熀紜錛屽悓鏃跺畠榪樻敮鎸乄indows銆丮acintosh銆乁nix/X11絳夊縐嶅鉤鍙般?/font>

3銆乄xWindows聽聽聽聽
聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細http://www.wxwindows.org/

璺ㄥ鉤鍙扮殑GUI搴撱傚洜涓哄叾綾誨眰嬈℃瀬鍍廙FC錛屾墍浠ユ湁鏂囩珷浠嬬粛浠嶮FC鍒癢xWindows鐨勪唬鐮佺Щ妞嶄互瀹炵幇璺ㄥ鉤鍙扮殑

鍔熻兘銆傞氳繃澶氬勾鐨勫紑鍙戜篃鏄竴涓棩瓚嬪畬鍠勭殑GUI搴擄紝鏀寔鍚屾牱涓嶅急浜庡墠闈袱涓簱銆傚茍涓旀槸瀹屽叏寮鏀炬簮浠?/font>

鐮佺殑銆傛柊榪戠殑C++ Builder X鐨凣UI璁捐鍣ㄥ氨鏄熀浜庤繖涓簱鐨勩?/font>

4銆丗ox聽聽聽聽聽
聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細http://www.fox-toolkit.org/

寮鏀炬簮浠g爜鐨凣UI搴撱備綔鑰呬粠鑷繁浜茶韓鐨勫紑鍙戠粡楠屼腑寰楀嚭浜嗕竴涓悊鎯崇殑GUI搴撳簲璇ユ槸浠涔堟牱瀛愮殑鎰熷彈鍑哄彂

錛屼粠鑰屽紑濮嬩簡瀵硅繖涓簱鐨勫紑鍙戙傛湁鍏磋叮鐨勫彲浠ュ皾璇曚竴涓嬨?/font>

5銆乄TL

鍩轟簬ATL鐨勪竴涓簱銆傚洜涓轟嬌鐢ㄤ簡澶ч噺ATL鐨勮交閲忕駭鎵嬫硶錛屾ā鏉跨瓑鎶鏈紝鍦ㄤ唬鐮佸昂瀵革紝浠ュ強閫熷害浼樺寲鏂歸潰鍋?/font>

寰楅潪甯稿埌浣嶃備富瑕侀潰鍚戠殑浣跨敤緹や綋鏄紑鍙慍OM杞婚噺綰т緵緗戠粶涓嬭澆鐨勫彲瑙嗗寲鎺т歡鐨勫紑鍙戣呫?/font>

6銆丟TK聽聽聽聽
聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細http://gtkmm.sourceforge.net/

GTK鏄竴涓ぇ鍚嶉紟榧庣殑C鐨勫紑婧怗UI搴撱傚湪Linux涓栫晫涓湁Gnome榪欐牱鐨勬潃鎵嬪簲鐢ㄣ傝孏TK灝辨槸榪欎釜搴撶殑C++

灝佽鐗堟湰銆?/font>


緗戠粶閫氫俊

ACE聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細http://www.cs.wustl.edu/~schmidt/ACE.html

C++搴撶殑浠h〃錛岃秴閲嶉噺綰х殑緗戠粶閫氫俊寮鍙戞鏋躲侫CE鑷傞厤閫氫俊鐜錛圓daptive Communication

Environment錛夋槸鍙互鑷敱浣跨敤銆佸紑鏀炬簮浠g爜鐨勯潰鍚戝璞℃鏋訛紝鍦ㄥ叾涓疄鐜頒簡璁稿鐢ㄤ簬騫跺彂閫氫俊杞歡鐨?/font>

鏍稿績妯″紡銆侫CE鎻愪緵浜嗕竴緇勪赴瀵岀殑鍙鐢–++鍖呰澶栬錛圵rapper Facade錛夊拰妗嗘灦緇勪歡錛屽彲璺ㄨ秺澶氱騫沖彴

瀹屾垚閫氱敤鐨勯氫俊杞歡浠誨姟錛屽叾涓寘鎷細浜嬩歡澶氳礬鍒嗙鍜屼簨浠跺鐞嗗櫒鍒嗘淳銆佷俊鍙峰鐞嗐佹湇鍔″垵濮嬪寲銆佽繘紼?/font>

闂撮氫俊銆佸叡浜唴瀛樼鐞嗐佹秷鎭礬鐢便佸垎甯冨紡鏈嶅姟鍔ㄦ侊紙閲嶏級閰嶇疆銆佸茍鍙戞墽琛屽拰鍚屾錛岀瓑絳夈?/font>

StreamModule聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細http://www.omnifarious.org/StrMod/

璁捐鐢ㄤ簬綆鍖栫紪鍐欏垎甯冨紡紼嬪簭鐨勫簱銆傚皾璇曠潃浣垮緱緙栧啓澶勭悊寮傛琛屼負鐨勭▼搴忔洿瀹規槗錛岃屼笉鏄敤鍚屾鐨勫澹?/font>

鍖呰搗寮傛鐨勬湰璐ㄣ?/font>

SimpleSocket聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細http://home.hetnet.nl/~lcbokkers/simsock.htm

榪欎釜綾誨簱璁╃紪鍐欏熀浜巗ocket鐨勫鎴?鏈嶅姟鍣ㄧ▼搴忔洿鍔犲鏄撱?/font>

A Stream Socket API for C++

聽聽聽聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細聽聽聽聽http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html

鍙堜竴涓Socket鐨勫皝瑁呭簱銆?/font>

XML

Xerces聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細http://xml.apache.org/xerces-c/

Xerces-C++ 鏄竴涓潪甯稿仴澹殑XML瑙f瀽鍣紝瀹冩彁渚涗簡楠岃瘉錛屼互鍙奡AX鍜孌OM API銆俋ML楠岃瘉鍦ㄦ枃妗g被鍨嬪畾

涔?Document Type Definition錛孌TD)鏂歸潰鏈夊緢濂界殑鏀寔錛屽茍涓斿湪2001騫?2鏈堝鍔犱簡鏀寔W3C XML

Schema 鐨勫熀鏈畬鏁寸殑寮鏀炬爣鍑嗐?/font>

XMLBooster聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細http://www.xmlbooster.com/

榪欎釜搴撻氳繃浜х敓鐗瑰埗鐨刾arser鐨勫姙娉曟瀬澶х殑鎻愰珮浜哫ML瑙f瀽鐨勯熷害錛屽茍涓旇兘澶熶駭鐢熺浉搴旂殑GUI紼嬪簭鏉ヤ慨鏀?/font>

榪欎釜parser銆傚湪DOM鍜孲AX涓ゅぇ涓繪祦XML瑙f瀽鍔炴硶涔嬪鎻愪緵浜嗗彟澶栦竴涓彲琛岀殑瑙e喅鏂規銆?/font>

Pull Parser

聽聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://www.extreme.indiana.edu/xgws/xsoap/

聽榪欎釜搴撻噰鐢╬ull鏂規硶鐨刾arser銆傚湪姣忎釜SAX鐨刾arser搴曞眰閮芥湁涓涓猵ull鐨刾arser錛岃繖涓獂pp鎶?/font>

榪欏眰鏆撮湶鍑烘潵鐩存帴緇欏ぇ瀹朵嬌鐢ㄣ傚湪瑕佸厖鍒嗚冭檻閫熷害鐨勬椂鍊欏煎緱灝濊瘯銆?/font>

Xalan

聽聽聽聽聽聽聽聽 鍙傝冪綉绔欙細 http://xml.apache.org/xalan-c/

聽聽聽聽聽聽聽聽 Xalan鏄竴涓敤浜庢妸XML鏂囨。杞崲涓篐TML錛岀函鏂囨湰鎴栬呭叾浠朮ML綾誨瀷鏂囨。鐨刋SLT澶勭悊鍣ㄣ?/font>

CMarkup

聽聽聽聽聽聽聽聽 鍙傝冪綉绔欙細 http://www.firstobject.com/xml.htm

聽聽聽聽聽聽聽聽 榪欐槸涓縐嶄嬌鐢‥DOM鐨刋ML瑙f瀽鍣ㄣ傚湪寰堝鎬濊礬涓婇潰闈炲父鐏墊椿瀹炵敤銆傚煎緱澶у鍦―OM鍜孲AX涔嬪瀵?/font>

姹備竴鐐圭伒鎰熴?/font>

libxml++

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽鍙傝冪綉绔櫬犅?http://libxmlplusplus.sourceforge.net/

libxml++鏄钁楀悕鐨刲ibxml XML瑙f瀽鍣ㄧ殑C++灝佽鐗堟湰

縐戝璁$畻

Blitz++

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://www.oonumerics.org/blitz/

Blitz++ 鏄竴涓珮鏁堢巼鐨勬暟鍊艱綆楀嚱鏁板簱錛屽畠鐨勮璁$洰鐨勬槸甯屾湜寤虹珛涓濂楁棦鍏峰儚C++ 涓鏍鋒柟渚匡紝鍚屾椂鍙?/font>

姣擣ortran閫熷害鏇村揩鐨勬暟鍊艱綆楃幆澧冦傞氬父錛岀敤C++鎵鍐欏嚭鐨勬暟鍊肩▼搴忥紝姣?Fortran鎱?0%宸﹀彸錛屽洜姝?/font>

Blitz++姝f槸瑕佹敼鎺夎繖涓己鐐廣傛柟娉曟槸鍒╃敤C++鐨則emplate鎶鏈紝紼嬪簭鎵ц鐢氳嚦鍙互姣擣ortran鏇村揩銆?/font>

Blitz++鐩墠浠嶅湪鍙戝睍涓紝瀵逛簬甯歌鐨凷VD錛孎FTs錛孮MRES絳夊父瑙佺殑綰挎т唬鏁版柟娉曞茍涓嶆彁渚涳紝涓嶈繃浣跨敤鑰?/font>

鍙互寰堝鏄撳湴鍒╃敤Blitz++鎵鎻愪緵鐨勫嚱鏁版潵鏋勫緩銆?/font>

POOMA

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://www.codesourcery.com/pooma/pooma

POOMA鏄竴涓厤璐圭殑楂樻ц兘鐨凜++搴擄紝鐢ㄤ簬澶勭悊騫惰寮忕瀛﹁綆椼侾OOMA鐨勯潰鍚戝璞¤璁℃柟渚夸簡蹇熺殑紼?/font>

搴忓紑鍙戯紝瀵瑰茍琛屾満鍣ㄨ繘琛屼簡浼樺寲浠ヨ揪鍒版渶楂樼殑鏁堢巼錛屾柟渚垮湪宸ヤ笟鍜岀爺絀剁幆澧冧腑浣跨敤銆?/font>

MTL聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細http://www.osl.iu.edu/research/mtl/

Matrix Template Library(MTL)鏄竴涓珮鎬ц兘鐨勬硾鍨嬬粍浠跺簱錛屾彁渚涗簡鍚勭鏍煎紡鐭╅樀鐨勫ぇ閲忕嚎鎬т唬鏁版柟闈?/font>

鐨勫姛鑳姐傚湪鏌愪簺搴旂敤浣跨敤楂樻ц兘緙栬瘧鍣ㄧ殑鎯呭喌涓嬶紝姣斿Intel鐨勭紪璇戝櫒錛屼粠浜х敓鐨勬眹緙栦唬鐮佸彲浠ョ湅鍑哄叾

涓庢墜鍐欏嚑涔庢病鏈変袱鏍風殑鏁堣兘銆?/font>

CGAL聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細www.cgal.org

Computational Geometry Algorithms Library鐨勭洰鐨勬槸鎶婂湪璁$畻鍑犱綍鏂歸潰鐨勫ぇ閮ㄥ垎閲嶈鐨勮В鍐蟲柟妗堝拰

鏂規硶浠++搴撶殑褰㈠紡鎻愪緵緇欏伐涓氬拰瀛︽湳鐣岀殑鐢ㄦ埛銆?/font>

娓告垙寮鍙?/strong>

Audio/Video 3D C++ Programming Library

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://www.galacticasoftware.com/products/av/

AV3D鏄竴涓法騫沖彴錛岄珮鎬ц兘鐨凜++搴撱備富瑕佺殑鐗規ф槸鎻愪緵3D鍥懼艦錛屽0鏁堟敮鎸侊紙SB,浠ュ強S3M錛夛紝鎺у埗鎺ュ彛

錛堥敭鐩橈紝榧犳爣鍜岄仴鎰燂級錛孹MS銆?/font>

KlayGE

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://home.g365.net/enginedev/

鍥藉唴娓告垙寮鍙戦珮鎵嬭嚜宸辯敤C++寮鍙戠殑娓告垙寮曟搸銆侹layGE鏄竴涓紑鏀炬簮浠g爜銆佽法騫沖彴鐨勬父鎴忓紩鎿庯紝騫朵嬌鐢?/font>

Python浣滆剼鏈璦銆侹layGE鍦↙GPL鍗忚涓嬪彂琛屻傛劅璋㈤練鏁忔晱鍏堢敓涓轟腑鍥芥父鎴忓紑鍙戜簨涓氭墍鍋氬嚭鐨勮礎鐚?/font>

OGRE

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://www.ogre3d.org

OGRE錛堥潰鍚戝璞$殑鍥懼艦娓叉煋寮曟搸錛夋槸鐢–++寮鍙戠殑錛屼嬌鐢ㄧ伒媧葷殑闈㈠悜瀵硅薄3D寮曟搸銆傚畠鐨勭洰鐨勬槸璁╁紑鍙戣?/font>

鑳芥洿鏂逛究鍜岀洿鎺ュ湴寮鍙戝熀浜?D紜歡璁懼鐨勫簲鐢ㄧ▼搴忔垨娓告垙銆傚紩鎿庝腑鐨勭被搴撳鏇村簳灞傜殑緋葷粺搴擄紙濡傦細

Direct3D鍜孫penGL錛夌殑鍏ㄩ儴浣跨敤緇嗚妭榪涜浜嗘娊璞★紝騫舵彁渚涗簡鍩轟簬鐜板疄涓栫晫瀵硅薄鐨勬帴鍙e拰鍏跺畠綾匯?/font>

綰跨▼

C++ Threads

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://threads.sourceforge.net/

榪欎釜搴撶殑鐩爣鏄粰紼嬪簭鍛樻彁渚涙槗浜庝嬌鐢ㄧ殑綾伙紝榪欎簺綾昏緇ф壙浠ユ彁渚涘湪Linux鐜涓緢闅劇湅鍒扮殑澶ч噺鐨勭嚎

紼嬫柟闈㈢殑鍔熻兘銆?/font>

ZThreads

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://zthread.sourceforge.net/

涓涓厛榪涚殑闈㈠悜瀵硅薄錛岃法騫沖彴鐨凜++綰跨▼鍜屽悓姝ュ簱銆?/font>

搴忓垪鍖?/strong>

s11n

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://s11n.net/

涓涓熀浜嶴TL鐨凜++搴擄紝鐢ㄤ簬搴忓垪鍖朠OD錛孲TL瀹瑰櫒浠ュ強鐢ㄦ埛瀹氫箟鐨勭被鍨嬨?/font>

Simple XML Persistence Library

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://sxp.sourceforge.net/

榪欐槸涓涓妸瀵硅薄搴忓垪鍖栦負XML鐨勮交閲忕駭鐨凜++搴撱?/font>

瀛楃涓?/strong>

C++ Str Library

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://www.utilitycode.com/str/

鎿嶄綔瀛楃涓插拰瀛楃鐨勫簱錛屾敮鎸乄indows鍜屾敮鎸乬cc鐨勫縐嶅鉤鍙般傛彁渚涢珮搴︿紭鍖栫殑浠g爜錛屽茍涓旀敮鎸佸綰跨▼鐜?/font>

澧冨拰Unicode錛屽悓鏃惰繕鏈夋鍒欒〃杈懼紡鐨勬敮鎸併?/font>

Common Text Transformation Library

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://cttl.sourceforge.net/

榪欐槸涓涓В鏋愬拰淇敼STL瀛楃涓茬殑搴撱侰TTL substring綾誨彲浠ョ敤鏉ユ瘮杈冿紝鎻掑叆錛屾浛鎹互鍙婄敤EBNF鐨勮娉?/font>

榪涜瑙f瀽銆?/font>

GRETA

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://research.microsoft.com/projects/greta/

榪欐槸鐢卞井杞爺絀墮櫌鐨勭爺絀朵漢鍛樺紑鍙戠殑澶勭悊姝e垯琛ㄨ揪寮忕殑搴撱傚湪灝忓瀷鍖歸厤鐨勬儏鍐典笅鏈夐潪甯鎬紭縐鐨勮〃鐜般?/font>

緇煎悎

P::Classes

聽聽聽聽聽聽聽聽聽鍙傝冪綉绔欙細 http://pclasses.com/

涓涓珮搴﹀彲縐繪鐨凜++搴旂敤紼嬪簭妗嗘灦銆傚綋鍓嶅叧娉ㄧ被鍨嬪拰綰跨▼瀹夊叏鐨剆ignal/slot鏈哄埗錛宨/o緋葷粺鍖呮嫭鍩轟簬

鎻掍歡鐨勭綉緇滃崗璁忔槑鐨刬/o鏋舵瀯錛屽熀浜庢彃浠剁殑搴旂敤紼嬪簭娑堟伅鏃ュ織妗嗘灦錛岃闂畇ql鏁版嵁搴撶殑綾葷瓑絳夈?/font>

ACDK - Artefaktur Component Development Kit



]]>
C++闅忕瑪 涔?C++澶氭佹у垎鏋?/title><link>http://m.shnenglu.com/mumutou/archive/2006/12/25/16842.html</link><dc:creator>鏈ㄦ湪澶?/dc:creator><author>鏈ㄦ湪澶?/author><pubDate>Mon, 25 Dec 2006 07:42:00 GMT</pubDate><guid>http://m.shnenglu.com/mumutou/archive/2006/12/25/16842.html</guid><wfw:comment>http://m.shnenglu.com/mumutou/comments/16842.html</wfw:comment><comments>http://m.shnenglu.com/mumutou/archive/2006/12/25/16842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/mumutou/comments/commentRss/16842.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/mumutou/services/trackbacks/16842.html</trackback:ping><description><![CDATA[ <font face="Courier New" size="2">鍘熸枃鍑哄</font> <a > <br /> <font face="Courier New" size="2">http://community.csdn.net/Expert/topic/5240/5240218.xml?temp=.6121942</font> </a> <br /> <br /> <font face="Courier New" size="2">C++澶氭佹ф槸鍩轟簬鎶借薄綾繪潵瀹炵幇鐨?浠涔堝彨鎶借薄綾?<br />鎶借薄綾誨氨鏄笉鑳借瀹炰緥鍖栫殑綾?涓昏鏄洜涓虹被涓寘鍚竴涓函铏氬嚱鏁?br />渚嬪:<br />virtual聽聽聽void聽聽聽draw() = 0;<br />鎶借薄綾諱笉鑳藉疄渚嬪寲,浣嗘槸鍏舵淳鐢熺被鍙互<br />媧劇敓綾婚噸鍐檇raw()鍑芥暟涔嬪悗灝卞彲浠ュ疄渚嬪寲瀵硅薄浜?閭d箞n涓淳鐢熺被鍙互鏈塶縐嶄笉鍚岀殑draw()鍑芥暟<br />涓句竴涓緥瀛?<br />渚嬪:聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽浜篬聽聽鐢蜂漢聽聽聽聽聽聽聽 濂充漢]<br />浜哄彲浠鍔沖姩]鍚?閭d箞鎴戜滑灝辨妸[鍔沖姩]榪欎釜鍑芥暟瀹氫箟涓虹函铏氬嚱鏁?<br />閭d箞鍦ㄥ畾涔塠鐢蜂漢]鐨勬椂鍊?鎴戜滑灝卞彲浠ラ噸鍐橻鍔沖姩]鍑芥暟,璁╀粬榪涜鑰曞湴鎿嶄綔<br />鍦ㄥ畾涔塠濂充漢]鐨勬椂鍊?鎴戜滑灝卞彲浠ラ噸鍐橻鍔沖姩]鍑芥暟,璁╁ス榪涜緇囧竷鎿嶄綔<br />閭d箞鍦ㄤ漢鍔沖姩鐨勬椂鍊?鍏蜂綋鍒扮敺浜?閭e氨鏄曞湴,鍏蜂綋鍒板コ浜?閭e氨鏄粐甯?br /><br />浠ヤ笂灝辨槸涓涓渶綆鍗曠殑瑙i噴<br />閭d箞鎴戜滑濡傛灉鍑虹幇榪欎釜闂,浜鴻繕鍒嗕負鑰佸勾浜?涓勾浜?灝忓瀛?br />閭d箞鎴戜滑鍦ㄧ戶鎵夸漢榪欎釜綾葷殑鏃跺?鎶婅佸勾浜?涓勾浜?灝忓瀛?涓嶈兘閲嶅啓瀹冪殑鍔沖姩鍑芥暟,涔熷氨鏄姵鍔ㄥ嚱鏁拌繕鏄竴涓函铏氬嚱鏁?涓嬮潰鎴戠粰鍑轟竴涓浘<br /><img src="file:///C:/Documents%20and%20Settings/Administrator/妗岄潰/class.bmp" /><br />[姣斿柣涓嶆槸寰堢‘鍗?鎶辨瓑]<br />涓嬮潰鎴戠粰渚嬪瓙:<br />Code Example<br />class Person<br />{<br />聽聽聽virtual void Do() = 0;<br />};<br />class OldPerson:public Persion<br />{<br />};<br />class OldMan:public OldPerson<br />{<br />聽聽聽void Do()<br />聽聽聽{<br />聽聽聽聽聽聽鎶界儫,鑱婂ぉ();<br />聽聽聽}<br />};<br />class OldWoman:public OldPerson<br />{<br />聽聽聽void Do()<br />聽聽聽{<br />聽聽聽聽聽聽媧楄。鏈?);<br />聽聽聽}<br />}<br />class MidPerson:public Person<br />{<br />};<br />class MidMan:public MidPerson<br />{<br />聽聽聽void Do()<br />聽聽聽{<br />聽聽聽聽聽聽鑰曞湴();<br />聽聽聽}<br />};<br />class MidWoman:public MidPerson<br />{<br />聽聽聽void聽聽聽Do()<br />聽聽聽{<br />聽聽聽聽聽聽緇囧竷();<br />聽聽聽}<br />};<br />......涓嬮潰灝忓瀛愮殑鎴戝氨涓嶅啓浜?鐩鎬俊鑱槑鐨勪綘涓涓嬪瓙灝辯煡閬撴庝箞鍐欎簡<br />void聽聽聽鍔沖姩(const Person &person)<br />{<br />聽聽聽person.Do();<br />}<br />void main()<br />{<br />聽聽聽聽聽聽MidWoman midwomen;<br />聽聽聽聽聽聽MidMan聽 midman;<br />聽聽聽聽聽聽鍔沖姩(midwoman);<br />聽聽聽聽聽聽鍔沖姩(midman);<br />聽聽聽聽聽聽<br />}<br /></font> <img src ="http://m.shnenglu.com/mumutou/aggbug/16842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/mumutou/" target="_blank">鏈ㄦ湪澶?/a> 2006-12-25 15:42 <a href="http://m.shnenglu.com/mumutou/archive/2006/12/25/16842.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C++闅忕瑪 涔?C++鐗規э細鍗曠戶鎵垮拰澶氱戶鎵跨殑鍚箟http://m.shnenglu.com/mumutou/archive/2006/12/25/16838.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Mon, 25 Dec 2006 05:59:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/25/16838.htmlhttp://m.shnenglu.com/mumutou/comments/16838.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/25/16838.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/16838.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16838.html鍘熸枃鍑哄錛?br /> http://community.csdn.net/Expert/topic/5252/5252647.xml?temp=.1502344
鍦–++涓戶鎵垮垎涓猴紥縐嶏細1.鍗曠戶鎵?錛?澶氱戶鎵?br />[鍗曠戶鎵胯В閲?]
媧劇敓綾繪湁寰堝,浣嗘槸鍩虹被鍙湁涓涓?榪欎釜灝辯浉褰撲笌涓涓?鐖朵翰"鍜屽緢澶氫釜瀛╁瓙,綾諱技浜庝竴閮ㄥ皬鍝?lt;<瓚呯敓娓稿嚮闃?gt;>,浠涔堜笂嫻?鍝堝皵婊?涔岄瞾鏈ㄩ綈鍟?/font>
[澶氱戶鎵胯В閲?]
媧劇敓綾誨彲浠ョ戶鎵挎潵鑷?涓互涓婄殑鍩虹被,A鍜孊鐢熷嚭鏉ョ殑"瀛╁瓙"鏈?鐖朵翰"鐨勭壒鎬т篃鏈?姣嶄翰"鐨?鐗規?榪欐湁鐐圭被浼間簬鍩哄洜閬椾紶.
涓嬮潰緇欏嚭渚嬪瓙:
Code Example:
class A
{
public:
聽聽聽A(int x,int y)
{
聽聽聽data1 = x;
聽聽聽data2 = y;
cout <<"A:"<<data1<<data2;
}
private:
聽聽聽int data1;
聽聽聽int data2;
};
class B
{
public:
聽聽聽B(int x,int y)
{
聽聽聽data1聽= x;
聽聽聽data2 =y;
聽聽聽cout << "B:"<<data1<<data2;
}
private:
聽聽聽int data1;
聽聽聽int data2;
};
class C:public A,public B
{
聽聽聽public:
聽聽聽C(int x,int y,int x1,int y1):A(x,y),B(x1,y1)
聽聽聽{
聽聽聽}
};
void main()
{
聽聽聽C c(1,2,3,4);
}


]]>C++闅忕瑪 涔?C++嫻嬭瘯棰樼洰http://m.shnenglu.com/mumutou/archive/2006/12/25/16836.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Mon, 25 Dec 2006 05:42:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/25/16836.htmlhttp://m.shnenglu.com/mumutou/comments/16836.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/25/16836.html#Feedback4http://m.shnenglu.com/mumutou/comments/commentRss/16836.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16836.html涓嬮潰榪欐浠g爜鐨勮緭鍑烘槸澶氬皯(鍦?2浣嶆満涓?.
聽聽聽 char *p;
聽聽聽 char *q[20];
聽聽聽 char *m[20][20];
聽聽聽 int (*n)[10];
聽聽聽 struct MyStruct
聽聽聽 {
聽聽聽聽聽 char dda;
聽聽聽聽聽 double dda1;
聽聽聽聽聽 int type ;
聽聽聽 }錛?
聽聽聽 MyStruct k;
聽聽聽 printf("%d %d %d %d %d",sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k));


]]>C++闅忕瑪 涔?鍏充簬C++鍙嬪厓鍑芥暟闂http://m.shnenglu.com/mumutou/archive/2006/12/25/16834.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Mon, 25 Dec 2006 05:36:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/25/16834.htmlhttp://m.shnenglu.com/mumutou/comments/16834.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/25/16834.html#Feedback1http://m.shnenglu.com/mumutou/comments/commentRss/16834.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16834.html 鍘熸枃鍑哄錛?/font>
http://community.csdn.net/Expert/topic/5253/5253345.xml?temp=.6615412

鍙嬪厓鍑芥暟鍙互瀹氫箟鍦ㄧ被鐨勫唴閮紝涔熷彲浠ュ畾涔夊湪綾葷殑澶栭儴錛屼絾鏄嵆浣垮畠瀹氫箟鍦ㄧ被鍐咃紝瀹冧篃鏄滃叏灞鍑芥暟鈥濄?br />閫氬父鍦ㄧ被鍑芥暟鍚嶅墠闈㈠0鏄巉riend
閭d箞灝卞彲浠ュ綾誨唴閮ㄧ殑private鍙橀噺榪涜鎿嶄綔浜?br />vc6.0瀵瑰弸鍏冨嚱鏁扮殑鏀寔鏈漢璁や負榪樺彲浠ワ紝騫朵笉鏄粬浠墍璇寸殑閭d箞宸紟
涓嬮潰緇欏嚭渚嬪瓙錛?br />Code Example:

#include <iostream>
#include <string>
using namespace std;
class A
{
private:
聽聽聽 string name;
public:
聽聽聽 friend void outdata(A &s) ;
聽聽聽 A(){};
聽聽聽 virtual ~A){};
聽聽聽 Astring &s);
};
A:student(string &s)
{
聽name=s;
}

void outdata(A &s)
{
聽cout<<"out data:"<<s.name<<endl;
}

void main()
{
聽string t="tim";
聽A s1(t);
聽outdata(s1);
}



]]>
C/C++闅忕瑪 涔?C++ Sizeof()鍑芥暟http://m.shnenglu.com/mumutou/archive/2006/12/25/16830.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Mon, 25 Dec 2006 05:13:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/25/16830.htmlhttp://m.shnenglu.com/mumutou/comments/16830.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/25/16830.html#Feedback0http://m.shnenglu.com/mumutou/comments/commentRss/16830.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16830.html鍘熸枃鍑哄:
http://community.csdn.net/Expert/topic/5253/5253878.xml?temp=.5134088
A聽====char *p[10];int *a[10];
閽堝榪欎釜闂
棣栧厛鎴戠粰鍑哄彟涓涓緥瀛?br />B聽====char (*p)[10];int (*a)[10];
A鍜孊鏄笉涓鏍風殑
A瑙i噴錛歝har *p[10]瀹氫箟浜?0涓?2浣嶇殑鎸囧悜char鐨勬寚閽坧[0],p[1],p[2]......p[9],
聽聽聽聽聽聽int *a[10]瀹氫箟浜?0涓?2浣嶇殑鎸囧悜int鐨勬寚閽坅[0],a[1],a[2]......a[9],
Get:10 * 32 /8 = 40,OK
B瑙i噴錛歝har (*p)[10]瀹氫箟浜嗕竴涓寚鍚?0涓猚har鐨?2浣嶆寚閽坧
聽聽聽聽聽聽int (*a)[10]瀹氫箟浜嗕竴涓寚鍚?0涓猧nt鐨?2浣嶆寚閽坅
Get:32/ 8 = 4, OK
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
Code Example:
void main()
{
聽char *p[10];
聽int聽 *a[10];
聽char (*p1)[10];
聽int聽 (*a1)[10];
聽int x1 = sizeof(p);
聽int x2 = sizeof(a);
聽int x3 = sizeof(p1);
聽int x4 = sizeof(a1);
聽cout <<x1<<"\n"<<x2<<"\n"<<x3<<"\n"<<x4<<"\n";
}


]]>C/C++闅忕瑪 涔?緇ф壙綾葷殑鏋勯?鏋愭瀯鍑芥暟浼氶殣寮忚皟鐢ㄥ熀綾葷殑鏋勯?鏋愭瀯鍑芥暟http://m.shnenglu.com/mumutou/archive/2006/12/25/16824.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Mon, 25 Dec 2006 04:58:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/25/16824.htmlhttp://m.shnenglu.com/mumutou/comments/16824.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/25/16824.html#Feedback1http://m.shnenglu.com/mumutou/comments/commentRss/16824.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16824.html棣栧厛澹版槑:鎴愬憳鍑芥暟涓嶄細,鍗充嬌鏄櫄鍑芥暟涔熶笉浼?
涓嬮潰鏄垜緇欏嚭鐨別xample:
#include <iostream.h>
int num = 0;
int num1 = 0;
class A
{
public:
聽A()
聽{
聽聽cout << num++;
聽}
聽~A()
聽{
聽聽cout << num --;
聽}
};
class B:public A
{
public:
聽B()
聽{
聽聽cout << num ++;
聽}
聽~B()
聽{
聽聽cout << num--;
聽}
};
void main()
{
聽A a;
聽B b;
}


]]>C/C++闅忕瑪 涔?涓涓湁瓚g殑C寰幆闂http://m.shnenglu.com/mumutou/archive/2006/12/25/16822.html鏈ㄦ湪澶?/dc:creator>鏈ㄦ湪澶?/author>Mon, 25 Dec 2006 04:41:00 GMThttp://m.shnenglu.com/mumutou/archive/2006/12/25/16822.htmlhttp://m.shnenglu.com/mumutou/comments/16822.htmlhttp://m.shnenglu.com/mumutou/archive/2006/12/25/16822.html#Feedback2http://m.shnenglu.com/mumutou/comments/commentRss/16822.htmlhttp://m.shnenglu.com/mumutou/services/trackbacks/16822.htmlvoid main()
{
聽int i;
聽int a[10];
聽for(i = 0;i <=10;i ++)
聽聽a[i] = 0;
}
澶у鐪?寰堢畝鍗曠殑涓涓棶棰?浣嗘槸涓轟粈涔堜細涓鐩存墽琛屽憿?
鏄庢樉,鑱槑鐨勪綘鐪嬪嚭闂鍑虹幇for(i = 0;i <= 10;i ++)聽聽聽a[i] = 0;
鎬誨叡瀹氫箟浜?0涓猧nt,鏄庢樉寰幆瓚呭嚭浜嗚寖鍥?
涓嬮潰鎴戜滑灝辨潵鐪嬬湅鍏舵眹緙栧浣曡繍琛?澶у灝遍兘鏄庣櫧浜?
00401031聽聽 mov聽聽聽聽聽聽聽聽 eax,dword ptr [ebp-4]
00401034聽聽 add聽聽聽聽聽聽聽聽 eax,1
00401037聽聽 mov聽聽聽聽聽聽聽聽 dword ptr [ebp-4],eax
0040103A聽聽 cmp聽聽聽聽聽聽聽聽 dword ptr [ebp-4],0Ah
0040103E聽聽 jg聽聽聽聽聽聽聽聽聽 main+3Dh (0040104d)
00401040聽聽 mov聽聽聽聽聽聽聽聽 ecx,dword ptr [ebp-4]
00401043聽聽 mov聽聽聽聽聽聽聽聽 dword ptr [ebp+ecx*4-2Ch],0
0040104B聽聽 jmp聽聽聽聽聽聽聽聽 main+21h (00401031)
紼嬪簭涓鐩村湪00401031-0040104B涔嬮棿榪愯,闂鍑哄湪00401043涓婇潰,
i鍙橀噺鍦╠wort ptr[ebp-4]
閭d箞褰撴墽琛屽埌i =10
dword ptr[ebp + ecx*4-2cH]= dword ptr[ebp+dword ptr[ebp-4]*4-2ch]
=dword ptr[ebp + 10*4-44] = dword ptr[ebp-4]
鍝堝搱,i鍙樻垚浜?


]]>
C/C++闅忕瑪 涔婥++鎷瘋礉鏋勯犲嚱鏁頒綔鐢?/title><link>http://m.shnenglu.com/mumutou/archive/2006/12/25/16819.html</link><dc:creator>鏈ㄦ湪澶?/dc:creator><author>鏈ㄦ湪澶?/author><pubDate>Mon, 25 Dec 2006 03:34:00 GMT</pubDate><guid>http://m.shnenglu.com/mumutou/archive/2006/12/25/16819.html</guid><wfw:comment>http://m.shnenglu.com/mumutou/comments/16819.html</wfw:comment><comments>http://m.shnenglu.com/mumutou/archive/2006/12/25/16819.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/mumutou/comments/commentRss/16819.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/mumutou/services/trackbacks/16819.html</trackback:ping><description><![CDATA[ <a href="/mumutou/articles/16816.html"> <font face="Courier New">http://m.shnenglu.com/mumutou/articles/16816.html</font> </a> <img src ="http://m.shnenglu.com/mumutou/aggbug/16819.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/mumutou/" target="_blank">鏈ㄦ湪澶?/a> 2006-12-25 11:34 <a href="http://m.shnenglu.com/mumutou/archive/2006/12/25/16819.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.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://eee88888.com" target="_blank">欧美揉bbbbb揉bbbbb</a>| <a href="http://cz-hongbangfloor.com" target="_blank">亚洲免费在线视频</a>| <a href="http://p54y.com" target="_blank">欧美裸体一区二区三区</a>| <a href="http://2061856.com" target="_blank">巨乳诱惑日韩免费av</a>| <a href="http://281191.com" target="_blank">久久久国际精品</a>| <a href="http://lampreydb.com" target="_blank">久久激情视频久久</a>| <a href="http://btbt7086.com" target="_blank">久久久999精品</a>| <a href="http://jnjpsm.com" target="_blank">久久在线精品</a>| <a href="http://5849595.com" target="_blank">欧美大片一区</a>| <a href="http://7467tom.com" target="_blank">欧美色图首页</a>| <a href="http://05ec.com" target="_blank">国产一二精品视频</a>| <a href="http://4hup23.com" target="_blank">亚洲国产高清视频</a>| <a href="http://avicpharm.com" target="_blank">一区二区久久久久</a>| <a href="http://bckxy.com" target="_blank">亚洲综合视频网</a>| <a href="http://taotuango.com" target="_blank">久久精品免费</a>| <a href="http://666888123.com" target="_blank">欧美国产日韩一区二区三区</a>| <a href="http://wwwok1965.com" target="_blank">亚洲激情在线视频</a>| <a href="http://buyiker.com" target="_blank">一本大道久久a久久精品综合</a>| <a href="http://338pv.com" target="_blank">亚洲自拍三区</a>| <a href="http://hg4958.com" target="_blank">欧美国产日韩免费</a>| <a href="http://hhjc7.com" target="_blank">国产嫩草影院久久久久 </a>| <a href="http://www1982t.com" target="_blank">亚洲人成网在线播放</a>| <a href="http://7776701.com" target="_blank">一本色道久久综合亚洲精品婷婷</a>| <a href="http://3838418.com" target="_blank">亚洲女爱视频在线</a>| <a href="http://667996.com" target="_blank">欧美激情bt</a>| <a href="http://miya2223.com" target="_blank">狠狠色丁香久久婷婷综合丁香 </a>| <a href="http://jqnyc.com" target="_blank">欧美怡红院视频一区二区三区</a>| <a href="http://by56677.com" target="_blank">乱人伦精品视频在线观看</a>| <a href="http://8135777.com" target="_blank">亚洲美女诱惑</a>| <a href="http://133686.com" target="_blank">美女网站在线免费欧美精品</a>| <a href="http://www666se.com" target="_blank">欧美午夜宅男影院</a>| <a href="http://9924338.com" target="_blank">亚洲高清免费在线</a>| <a href="http://004ttt.com" target="_blank">久久精品国产综合</a>| <a href="http://av2027.com" target="_blank">亚洲欧美日韩一区在线</a>| <a href="http://176sfsf.com" target="_blank">欧美激情乱人伦</a>| <a href="http://sg-lxs.com" target="_blank">国产欧美日韩精品在线</a>| <a href="http://www-4890.com" target="_blank">亚洲激情自拍</a>| <a href="http://yhc26.com" target="_blank">久久先锋资源</a>| <a href="http://www-xj788.com" target="_blank">亚洲欧美亚洲</a>| <a href="http://www-4564949.com" target="_blank">欧美午夜精品久久久</a>| <a href="http://wawabt.com" target="_blank">亚洲六月丁香色婷婷综合久久</a>| <a href="http://ndr666.com" target="_blank">久久久综合网</a>| <a href="http://2ejj.com" target="_blank">亚洲综合欧美</a>| <a href="http://123273.com" target="_blank">国产精品乱人伦一区二区</a>| <a href="http://99999zc.com" target="_blank">日韩午夜激情av</a>| <a href="http://zhaosaoz.com" target="_blank">欧美福利一区</a>| <a href="http://7878168.com" target="_blank">老司机免费视频久久</a>| <a href="http://54zcr.com" target="_blank">国内精品亚洲</a>| <a href="http://huohuoglobal.com" target="_blank">久久av在线</a>| <a href="http://1235656.com" target="_blank">亚洲欧美综合</a>| <a href="http://yunyang0991.com" target="_blank">国产欧美不卡</a>| <a href="http://yyyy456.com" target="_blank">欧美在线免费一级片</a>| <a href="http://chunshanketang.com" target="_blank">一本色道久久综合亚洲精品小说 </a>| <a href="http://m72722.com" target="_blank">久久久久国产一区二区三区</a>| <a href="http://wo6wo.com" target="_blank">亚洲午夜精品一区二区</a>| <a href="http://ooo789.com" target="_blank">国产精品99免视看9</a>| <a href="http://40346c.com" target="_blank">亚洲午夜激情网站</a>| <a href="http://ttmitch.com" target="_blank">一本色道久久综合</a>| <a href="http://mfgun.com" target="_blank">国产精品欧美日韩一区二区</a>| <a href="http://41818c.com" target="_blank">亚洲综合色自拍一区</a>| <a href="http://5gn4y.com" target="_blank">一区二区三区日韩欧美精品</a>| <a href="http://ks180.com" target="_blank">欧美日韩一本到</a>| <a href="http://www-333410.com" target="_blank">中文国产一区</a>| <a href="http://wilcherish.com" target="_blank">中文亚洲欧美</a>| <a href="http://04781900.com" target="_blank">国产日韩欧美在线视频观看</a>| <a href="http://mm77gg.com" target="_blank">欧美一区2区三区4区公司二百</a>| <a href="http://myasker.com" target="_blank">亚洲天堂av电影</a>| <a href="http://www993997.com" target="_blank">国产美女搞久久</a>| <a href="http://lgaoxiao.com" target="_blank">久久久噜噜噜久噜久久</a>| <a href="http://avtt59999.com" target="_blank">久久国产色av</a>| <a href="http://608u.com" target="_blank">亚洲经典三级</a>| <a href="http://979695.com" target="_blank">日韩视频在线免费</a>| <a href="http://18av-2.com" target="_blank">国产精品美女主播</a>| <a href="http://wawabt.com" target="_blank">久久久久亚洲综合</a>| <a href="http://80hogo.com" target="_blank">免费黄网站欧美</a>| <a href="http://wwwbbb888999.com" target="_blank">这里只有精品丝袜</a>| <a href="http://weixiao668.com" target="_blank">亚洲制服av</a>| <a href="http://226600b.com" target="_blank">激情文学一区</a>| <a href="http://noeljgq.com" target="_blank">亚洲人成亚洲人成在线观看图片</a>| <a href="http://977mo.com" target="_blank">欧美私人啪啪vps</a>| <a href="http://xhtd688.com" target="_blank">久久成人av少妇免费</a>| <a href="http://799868.com" target="_blank">乱中年女人伦av一区二区</a>| <a href="http://dmzjz.com" target="_blank">一本久久a久久精品亚洲</a>| <a href="http://love136.com" target="_blank">亚洲一级片在线看</a>| <a href="http://www3344xz.com" target="_blank">在线视频国产日韩</a>| <a href="http://216667.com" target="_blank">aa级大片欧美三级</a>| <a href="http://3dmh329.com" target="_blank">国语自产精品视频在线看抢先版结局 </a>| <a href="http://shenduzhongcao.com" target="_blank">欧美成人午夜</a>| <a href="http://mxkaozi.com" target="_blank">亚洲国产日韩欧美综合久久</a>| <a href="http://66636by.com" target="_blank">亚洲激情av</a>| <a href="http://yidaiban.com" target="_blank">国产精品一卡二卡</a>| <a href="http://www-777324.com" target="_blank">欧美成人综合在线</a>| <a href="http://6966g.com" target="_blank">国产精品国码视频</a>| <a href="http://82b2.com" target="_blank">欧美二区乱c少妇</a>| <a href="http://www49853b.com" target="_blank">国产精品社区</a>| <a href="http://xianconnector.com" target="_blank">欧美激情小视频</a>| <a href="http://036762.com" target="_blank">国产精品午夜在线观看</a>| <a href="http://789583.com" target="_blank">亚洲国产成人久久综合一区</a>| <a href="http://szjyf668.com" target="_blank">国产精品免费看片</a>| <a href="http://www344399.com" target="_blank">亚洲大片在线</a>| <a href="http://4c8x.com" target="_blank">韩国成人理伦片免费播放</a>| <a href="http://5599912.com" target="_blank">日韩视频精品</a>| <a href="http://123hiba.com" target="_blank">亚洲激情二区</a>| <a href="http://16kkkk.com" target="_blank">久久国产直播</a>| <a href="http://5177jy.com" target="_blank">午夜久久久久</a>| <a href="http://hkjccc.com" target="_blank">欧美日韩成人一区二区</a>| <a href="http://6868681.com" target="_blank">久久久夜夜夜</a>| <a href="http://zhhtianyi.com" target="_blank">国产精品久久久久久久久借妻 </a>| <a href="http://118626cc.com" target="_blank">一本久久综合</a>| <a href="http://520637.com" target="_blank">久久网站热最新地址</a>| <a href="http://329aaa.com" target="_blank">香蕉久久夜色</a>| <a href="http://11b29.com" target="_blank">欧美日韩国产123区</a>| <a href="http://44368com.com" target="_blank">欧美/亚洲一区</a>| <a href="http://3848404.com" target="_blank">国产一区在线免费观看</a>| <a href="http://895658.com" target="_blank">亚洲午夜在线观看</a>| <a href="http://5138555.com" target="_blank">一区二区三区日韩欧美</a>| <a href="http://1069024.com" target="_blank">免费人成网站在线观看欧美高清</a>| <a href="http://www78778.com" target="_blank">午夜欧美大片免费观看</a>| <a href="http://uniconmgt.com" target="_blank">欧美日韩国产综合久久</a>| <a href="http://yw8333.com" target="_blank">亚洲国产成人精品久久</a>| <a href="http://www151zh.com" target="_blank">在线看片日韩</a>| <a href="http://yy306.com" target="_blank">久久永久免费</a>| <a href="http://15149cc.com" target="_blank">欧美高清在线精品一区</a>| <a href="http://74va.com" target="_blank">亚洲第一天堂av</a>| <a href="http://390642.com" target="_blank">久久人人97超碰精品888</a>| <a href="http://qiaoka526.com" target="_blank">久久av资源网站</a>| <a href="http://my1315.com" target="_blank">国产日韩精品一区观看</a>| <a href="http://ruichengxiang.com" target="_blank">亚洲女同同性videoxma</a>| <a href="http://fobdoer.com" target="_blank">午夜精品久久久久99热蜜桃导演</a>| <a href="http://6673328.com" target="_blank">欧美日韩精品免费观看视频完整 </a>| <a href="http://sesese98.com" target="_blank">久久婷婷久久</a>| <a href="http://sinojinxing.com" target="_blank">久久成人免费网</a>| <a href="http://082235.com" target="_blank">国产欧美日韩精品a在线观看</a>| <a href="http://www-23918.com" target="_blank">在线一区二区三区四区五区</a>| <a href="http://www49773.com" target="_blank">一本一本久久</a>| <a href="http://www333444123.com" target="_blank">欧美日韩在线播放一区二区</a>| <a href="http://www4848xx.com" target="_blank">亚洲精品国产系列</a>| <a href="http://www44552.com" target="_blank">在线亚洲免费</a>| <a href="http://www134rr.com" target="_blank">国产精品免费电影</a>| <a href="http://4545www.com" target="_blank">欧美一级大片在线免费观看</a>| <a href="http://9876666.com" target="_blank">久久成人精品视频</a>| <a href="http://hhsj31.com" target="_blank">在线成人免费观看</a>| <a href="http://888nei.com" target="_blank">欧美成人午夜影院</a>| <a href="http://787622.com" target="_blank">日韩亚洲欧美一区</a>| <a href="http://aberyco.com" target="_blank">欧美一级午夜免费电影</a>| <a href="http://changjiucf.com" target="_blank">国模叶桐国产精品一区</a>| <a href="http://123hiba.com" target="_blank">久久一区二区精品</a>| <a href="http://0934photo.com" target="_blank">亚洲激情视频</a>| <a href="http://qq5621.com" target="_blank">亚洲欧美日韩国产综合在线</a>| <a href="http://ncyy4.com" target="_blank">国产免费成人</a>| <a href="http://yiapk.com" target="_blank">美女精品网站</a>| <a href="http://btbt7086.com" target="_blank">日韩视频免费观看高清在线视频 </a>| <a href="http://707377c.com" target="_blank">国产精品hd</a>| <a href="http://44779c.com" target="_blank">亚洲一区中文字幕在线观看</a>| <a href="http://jzsp101.com" target="_blank">欧美亚洲一区二区在线</a>| <a href="http://ydy8.com" target="_blank">国产曰批免费观看久久久</a>| <a href="http://xgame8.com" target="_blank">久久综合色播五月</a>| <a href="http://yckjwb.com" target="_blank">亚洲免费高清视频</a>| <a href="http://gzzhuangshi.com" target="_blank">欧美在线观看视频一区二区三区 </a>| <a href="http://a718sx.com" target="_blank">美国成人直播</a>| <a href="http://yjdm296.com" target="_blank">亚洲免费不卡</a>| <a href="http://www442222.com" target="_blank">久久www免费人成看片高清</a>| <a href="http://www-111111.com" target="_blank">伊人久久亚洲热</a>| <a href="http://ww245434.com" target="_blank">欧美日韩国产亚洲一区</a>| <a href="http://1355456.com" target="_blank">午夜精品一区二区三区电影天堂</a>| <a href="http://042455.com" target="_blank">另类国产ts人妖高潮视频</a>| <a href="http://huohuoglobal.com" target="_blank">亚洲精品一区二区三区四区高清</a>| <a href="http://613by.com" target="_blank">欧美午夜精品久久久久免费视</a>| <a href="http://ridenimbus.com" target="_blank">欧美亚洲三区</a>| <a href="http://www-4890.com" target="_blank">亚洲人成欧美中文字幕</a>| <a href="http://ywbst8g4tukcsqhioikc.com" target="_blank">亚洲欧美成人网</a>| <a href="http://xshgwy.com" target="_blank">亚洲二区在线视频</a>| <a href="http://www-333304.com" target="_blank">欧美日韩一区视频</a>| <a href="http://yw3328.com" target="_blank">久久人人九九</a>| <a href="http://devwang.com" target="_blank">亚洲天天影视</a>| <a href="http://fc3332.com" target="_blank">亚洲日本无吗高清不卡</a>| <a href="http://caihongie.com" target="_blank">久久九九久精品国产免费直播</a>| <a href="http://592xyy.com" target="_blank">亚洲人体影院</a>| <a href="http://1069024.com" target="_blank">国产一区二区精品久久</a>| <a href="http://www672hh.com" target="_blank">欧美国产日韩a欧美在线观看</a>| <a href="http://remenkan.com" target="_blank">亚洲伊人色欲综合网</a>| <a href="http://958997.com" target="_blank">亚洲国产欧美国产综合一区</a>| <a href="http://1332233.com" target="_blank">欧美在线看片</a>| <a href="http://qkspvip.com" target="_blank">亚洲尤物精选</a>| <a href="http://521nb.com" target="_blank">日韩一级大片</a>| <a href="http://18av-77.com" target="_blank">韩国精品在线观看</a>| <a href="http://344230.com" target="_blank">国产精品夜夜夜</a>| <a href="http://www-440447.com" target="_blank">欧美精品在线极品</a>| <a href="http://cz-hongbangfloor.com" target="_blank">久久久青草婷婷精品综合日韩 </a>| <a href="http://www23sds.com" target="_blank">激情欧美一区二区三区</a>| <a href="http://www-06654.com" target="_blank">欧美午夜宅男影院</a>| <a href="http://69jp.com" target="_blank">欧美剧在线观看</a>| <a href="http://aqdav81.com" target="_blank">免费在线一区二区</a>| <a href="http://avse69.com" target="_blank">久久国产一区</a>| <a href="http://mkaqiu.com" target="_blank">性久久久久久久</a>| <a href="http://sdxinqi.com" target="_blank">亚洲性色视频</a>| <a href="http://4080sy.com" target="_blank">一区二区三区www</a>| <a href="http://566805.com" target="_blank">99精品热6080yy久久</a>| <a href="http://s0247.com" target="_blank">亚洲国产影院</a>| <a href="http://0085212.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>