锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品女主播一区二区三区,久久婷婷综合激情,免费黄网站欧美http://m.shnenglu.com/erran/category/5344.htmlzh-cnMon, 19 May 2008 13:29:01 GMTMon, 19 May 2008 13:29:01 GMT60杞細瀛楄妭瀵歸綈璇﹁Вhttp://m.shnenglu.com/erran/archive/2007/10/16/34383.htmlerranerranTue, 16 Oct 2007 14:56:00 GMThttp://m.shnenglu.com/erran/archive/2007/10/16/34383.htmlhttp://m.shnenglu.com/erran/comments/34383.htmlhttp://m.shnenglu.com/erran/archive/2007/10/16/34383.html#Feedback2http://m.shnenglu.com/erran/comments/commentRss/34383.htmlhttp://m.shnenglu.com/erran/services/trackbacks/34383.html鐪嬩簡榪欑瘒錛坔ttp://m.shnenglu.com/Randy/archive/2007/10/15/34288.aspx錛夊叧浜庡瓧鑺傚鍏剁殑闅忕瑪錛岃寰楄糠榪風硦緋婄殑錛岃剳琚嬮噷鍙湁瀛楄妭瀵瑰叾榪欎釜姒傚康錛屽叿浣撻兘蹇樼殑宸笉澶氫簡錛屽張鍙﹀鎵句簡綃囩粏璇諱簡涓嬶紝鎬葷畻鐞嗚В浜嗐?br />
鏉ユ簮錛歨ttp://www.yuanma.org/data/2006/0723/article_1213.htm

涓.浠涔堟槸瀛楄妭瀵歸綈,涓轟粈涔堣瀵歸綈?

聽聽聽 鐜頒唬璁$畻鏈轟腑鍐呭瓨絀洪棿閮芥槸鎸夌収byte鍒掑垎鐨勶紝浠庣悊璁轟笂璁蹭技涔庡浠諱綍綾誨瀷鐨勫彉閲忕殑璁塊棶鍙互浠庝換浣曞湴鍧寮濮嬶紝浣嗗疄闄呮儏鍐墊槸鍦ㄨ闂壒瀹氱被鍨嬪彉閲忕殑鏃跺欑粡甯稿湪鐗? 瀹氱殑鍐呭瓨鍦板潃璁塊棶錛岃繖灝遍渶瑕佸悇縐嶇被鍨嬫暟鎹寜鐓т竴瀹氱殑瑙勫垯鍦ㄧ┖闂翠笂鎺掑垪錛岃屼笉鏄『搴忕殑涓涓帴涓涓殑鎺掓斁錛岃繖灝辨槸瀵歸綈銆?br />聽聽聽 瀵歸綈鐨勪綔鐢ㄥ拰鍘熷洜錛氬悇涓‖浠跺鉤鍙板瀛樺偍絀洪棿鐨勫鐞嗕笂鏈夊緢澶х殑涓嶅悓銆備竴浜涘鉤鍙板鏌愪簺鐗瑰畾綾誨瀷鐨勬暟鎹彧鑳戒粠鏌愪簺鐗瑰畾鍦板潃寮濮嬪瓨鍙栥傛瘮濡傛湁浜涙灦鏋勭殑CPU鍦ㄨ闂? 涓涓病鏈夎繘琛屽榻愮殑鍙橀噺鐨勬椂鍊欎細鍙戠敓閿欒,閭d箞鍦ㄨ繖縐嶆灦鏋勪笅緙栫▼蹇呴』淇濊瘉瀛楄妭瀵歸綈.鍏朵粬騫沖彴鍙兘娌℃湁榪欑鎯呭喌錛屼絾鏄渶甯歌鐨勬槸濡傛灉涓嶆寜鐓ч傚悎鍏跺鉤鍙拌姹傚 鏁版嵁瀛樻斁榪涜瀵歸綈錛屼細鍦ㄥ瓨鍙栨晥鐜囦笂甯︽潵鎹熷け銆傛瘮濡傛湁浜涘鉤鍙版瘡嬈¤閮芥槸浠庡伓鍦板潃寮濮嬶紝濡傛灉涓涓猧nt鍨嬶紙鍋囪涓?2浣嶇郴緇燂級濡傛灉瀛樻斁鍦ㄥ伓鍦板潃寮濮嬬殑鍦版柟錛岄偅 涔堜竴涓鍛ㄦ湡灝卞彲浠ヨ鍑鴻繖32bit錛岃屽鏋滃瓨鏀懼湪濂囧湴鍧寮濮嬬殑鍦版柟錛屽氨闇瑕?涓鍛ㄦ湡錛屽茍瀵逛袱嬈¤鍑虹殑緇撴灉鐨勯珮浣庡瓧鑺傝繘琛屾嫾鍑戞墠鑳藉緱鍒拌32bit鏁? 鎹傛樉鐒跺湪璇誨彇鏁堢巼涓婁笅闄嶅緢澶氥?/p>

浜?瀛楄妭瀵歸綈瀵圭▼搴忕殑褰卞搷:

聽聽聽 鍏堣鎴戜滑鐪嬪嚑涓緥瀛愬惂(32bit,x86鐜,gcc緙栬瘧鍣?:
璁劇粨鏋勪綋濡備笅瀹氫箟錛?br />struct A
{
聽聽聽 int a;
聽聽聽 char b;
聽聽聽 short c;
};
struct B
{
聽聽聽 char b;
聽聽聽 int a;
聽聽聽 short c;
};
鐜板湪宸茬煡32浣嶆満鍣ㄤ笂鍚勭鏁版嵁綾誨瀷鐨勯暱搴﹀涓?
char:1(鏈夌鍙鋒棤絎﹀彿鍚?聽聽聽聽
short:2(鏈夌鍙鋒棤絎﹀彿鍚?聽聽聽聽
int:4(鏈夌鍙鋒棤絎﹀彿鍚?聽聽聽聽
long:4(鏈夌鍙鋒棤絎﹀彿鍚?聽聽聽聽
float:4聽聽聽聽double:8
閭d箞涓婇潰涓や釜緇撴瀯澶у皬濡備綍鍛?
緇撴灉鏄?
sizeof(strcut A)鍊間負8
sizeof(struct B)鐨勫煎嵈鏄?2

緇撴瀯浣揂涓寘鍚簡4瀛楄妭闀垮害鐨刬nt涓涓紝1瀛楄妭闀垮害鐨刢har涓涓拰2瀛楄妭闀垮害鐨剆hort鍨嬫暟鎹竴涓?B涔熶竴鏍?鎸夌悊璇碅,B澶у皬搴旇閮芥槸7瀛楄妭銆?br />涔嬫墍浠ュ嚭鐜頒笂闈㈢殑緇撴灉鏄洜涓虹紪璇戝櫒瑕佸鏁版嵁鎴愬憳鍦ㄧ┖闂翠笂榪涜瀵歸綈銆備笂闈㈡槸鎸夌収緙栬瘧鍣ㄧ殑榛樿璁劇疆榪涜瀵歸綈鐨勭粨鏋?閭d箞鎴戜滑鏄笉鏄彲浠ユ敼鍙樼紪璇戝櫒鐨勮繖縐嶉粯璁ゅ榻愯緗憿,褰撶劧鍙互.渚嬪:
#pragma pack (2) /*鎸囧畾鎸?瀛楄妭瀵歸綈*/
struct C
{
聽聽聽 char b;
聽聽聽 int a;
聽聽聽 short c;
};
#pragma pack () /*鍙栨秷鎸囧畾瀵歸綈錛屾仮澶嶇己鐪佸榻?/
sizeof(struct C)鍊兼槸8銆?br />淇敼瀵歸綈鍊間負1錛?br />#pragma pack (1) /*鎸囧畾鎸?瀛楄妭瀵歸綈*/
struct D
{
聽聽聽 char b;
聽聽聽 int a;
聽聽聽 short c;
};
#pragma pack () /*鍙栨秷鎸囧畾瀵歸綈錛屾仮澶嶇己鐪佸榻?/
sizeof(struct D)鍊間負7銆?br />鍚庨潰鎴戜滑鍐嶈瑙?pragma pack()鐨勪綔鐢?

涓?緙栬瘧鍣ㄦ槸鎸夌収浠涔堟牱鐨勫師鍒欒繘琛屽榻愮殑?

聽聽聽 鍏堣鎴戜滑鐪嬪洓涓噸瑕佺殑鍩烘湰姒傚康錛?br />1.鏁版嵁綾誨瀷鑷韓鐨勫榻愬鹼細
聽 瀵逛簬char鍨嬫暟鎹紝鍏惰嚜韜榻愬間負1錛屽浜巗hort鍨嬩負2錛屽浜巌nt,float,double綾誨瀷錛屽叾鑷韓瀵歸綈鍊間負4錛屽崟浣嶅瓧鑺傘?br />2.緇撴瀯浣撴垨鑰呯被鐨勮嚜韜榻愬鹼細鍏舵垚鍛樹腑鑷韓瀵歸綈鍊兼渶澶х殑閭d釜鍊箋?br />3.鎸囧畾瀵歸綈鍊?/font>錛?pragma pack (value)鏃剁殑鎸囧畾瀵歸綈鍊紇alue銆?br />4.鏁版嵁鎴愬憳銆佺粨鏋勪綋鍜岀被鐨勬湁鏁堝榻愬鹼細鑷韓瀵歸綈鍊煎拰鎸囧畾瀵歸綈鍊間腑灝忕殑閭d釜鍊箋?br />鏈? 浜嗚繖浜涘鹼紝鎴戜滑灝卞彲浠ュ緢鏂逛究鐨勬潵璁ㄨ鍏蜂綋鏁版嵁緇撴瀯鐨勬垚鍛樺拰鍏惰嚜韜殑瀵歸綈鏂瑰紡銆傛湁鏁堝榻愬糔鏄渶緇堢敤鏉ュ喅瀹氭暟鎹瓨鏀懼湴鍧鏂瑰紡鐨勫鹼紝鏈閲嶈銆傛湁鏁堝榻怤錛屽氨鏄? 琛ㄧず鈥滃榻愬湪N涓娾濓紝涔熷氨鏄璇ユ暟鎹殑"瀛樻斁璧峰鍦板潃%N=0".鑰屾暟鎹粨鏋勪腑鐨勬暟鎹彉閲忛兘鏄寜瀹氫箟鐨勫厛鍚庨『搴忔潵鎺掓斁鐨勩傜涓涓暟鎹彉閲忕殑璧峰鍦板潃灝辨槸鏁? 鎹粨鏋勭殑璧峰鍦板潃銆傜粨鏋勪綋鐨勬垚鍛樺彉閲忚瀵歸綈鎺掓斁錛岀粨鏋勪綋鏈韓涔熻鏍規嵁鑷韓鐨勬湁鏁堝榻愬煎渾鏁?灝辨槸緇撴瀯浣撴垚鍛樺彉閲忓崰鐢ㄦ婚暱搴﹂渶瑕佹槸瀵圭粨鏋勪綋鏈夋晥瀵歸綈鍊肩殑鏁存暟 鍊嶏紝緇撳悎涓嬮潰渚嬪瓙鐞嗚В)銆傝繖鏍峰氨涓嶈兘鐞嗚В涓婇潰鐨勫嚑涓緥瀛愮殑鍊間簡銆?br />渚嬪瓙鍒嗘瀽錛?br />鍒嗘瀽渚嬪瓙B錛?br />struct B
{
聽聽聽 char b;
聽聽聽 int a;
聽聽聽 short c;
};
鍋? 璁綛浠庡湴鍧絀洪棿0x0000寮濮嬫帓鏀俱傝渚嬪瓙涓病鏈夊畾涔夋寚瀹氬榻愬鹼紝鍦ㄧ瑪鑰呯幆澧冧笅錛岃鍊奸粯璁や負4銆傜涓涓垚鍛樺彉閲廱鐨勮嚜韜榻愬兼槸1錛屾瘮鎸囧畾鎴栬呴粯璁ゆ寚瀹? 瀵歸綈鍊?灝忥紝鎵浠ュ叾鏈夋晥瀵歸綈鍊間負1錛屾墍浠ュ叾瀛樻斁鍦板潃0x0000絎﹀悎0x0000%1=0.絎簩涓垚鍛樺彉閲廰錛屽叾鑷韓瀵歸綈鍊間負4錛屾墍浠ユ湁鏁堝榻愬間篃涓?錛? 鎵浠ュ彧鑳藉瓨鏀懼湪璧峰鍦板潃涓?x0004鍒?x0007榪欏洓涓繛緇殑瀛楄妭絀洪棿涓紝澶嶆牳0x0004%4=0,涓旂揣闈犵涓涓彉閲忋傜涓変釜鍙橀噺c,鑷韓瀵歸綈鍊間負 2錛屾墍浠ユ湁鏁堝榻愬間篃鏄?錛屽彲浠ュ瓨鏀懼湪0x0008鍒?x0009榪欎袱涓瓧鑺傜┖闂翠腑錛岀鍚?x0008%2=0銆傛墍浠ヤ粠0x0000鍒?x0009瀛樻斁鐨? 閮芥槸B鍐呭銆傚啀鐪嬫暟鎹粨鏋凚鐨勮嚜韜榻愬間負鍏跺彉閲忎腑鏈澶у榻愬?榪欓噷鏄痓錛夋墍浠ュ氨鏄?錛屾墍浠ョ粨鏋勪綋鐨勬湁鏁堝榻愬間篃鏄?銆傛牴鎹粨鏋勪綋鍦嗘暣鐨勮姹傦紝 0x0009鍒?x0000=10瀛楄妭錛岋紙10錛?錛夛紖4錛?銆傛墍浠?x0000A鍒?x000B涔熶負緇撴瀯浣揃鎵鍗犵敤銆傛晠B浠?x0000鍒?x000B 鍏辨湁12涓瓧鑺?sizeof(struct B)=12;鍏跺疄濡傛灉灝辮繖涓涓氨鏉ヨ瀹冨凡灝嗘弧瓚沖瓧鑺傚榻愪簡, 鍥犱負瀹冪殑璧峰鍦板潃鏄?,鍥犳鑲畾鏄榻愮殑,涔嬫墍浠ュ湪鍚庨潰琛ュ厖2涓瓧鑺?鏄洜涓虹紪璇戝櫒涓轟簡瀹炵幇緇撴瀯鏁扮粍鐨勫瓨鍙栨晥鐜?璇曟兂濡傛灉鎴戜滑瀹氫箟浜嗕竴涓粨鏋凚鐨勬暟緇?閭? 涔堢涓涓粨鏋勮搗濮嬪湴鍧鏄?娌℃湁闂,浣嗘槸絎簩涓粨鏋勫憿?鎸夌収鏁扮粍鐨勫畾涔?鏁扮粍涓墍鏈夊厓绱犻兘鏄揣鎸ㄧ潃鐨?濡傛灉鎴戜滑涓嶆妸緇撴瀯鐨勫ぇ灝忚ˉ鍏呬負4鐨勬暣鏁板?閭d箞涓嬩竴 涓粨鏋勭殑璧峰鍦板潃灝嗘槸0x0000A,榪欐樉鐒朵笉鑳芥弧瓚崇粨鏋勭殑鍦板潃瀵歸綈浜?鍥犳鎴戜滑瑕佹妸緇撴瀯琛ュ厖鎴愭湁鏁堝榻愬ぇ灝忕殑鏁存暟鍊?鍏跺疄璇稿:瀵逛簬char鍨嬫暟鎹紝鍏? 鑷韓瀵歸綈鍊間負1錛屽浜巗hort鍨嬩負2錛屽浜巌nt,float,double綾誨瀷錛屽叾鑷韓瀵歸綈鍊間負4錛岃繖浜涘凡鏈夌被鍨嬬殑鑷韓瀵歸綈鍊間篃鏄熀浜庢暟緇勮冭檻鐨?鍙? 鏄洜涓鴻繖浜涚被鍨嬬殑闀垮害宸茬煡浜?鎵浠ヤ粬浠殑鑷韓瀵歸綈鍊間篃灝卞凡鐭ヤ簡.
鍚岀悊,鍒嗘瀽涓婇潰渚嬪瓙C錛?br />#pragma pack (2) /*鎸囧畾鎸?瀛楄妭瀵歸綈*/
struct C
{
聽聽聽 char b;
聽聽聽 int a;
聽聽聽 short c;
};
#pragma pack () /*鍙栨秷鎸囧畾瀵歸綈錛屾仮澶嶇己鐪佸榻?/
絎? 涓涓彉閲廱鐨勮嚜韜榻愬間負1錛屾寚瀹氬榻愬間負2錛屾墍浠ワ紝鍏舵湁鏁堝榻愬間負1錛屽亣璁綜浠?x0000寮濮嬶紝閭d箞b瀛樻斁鍦?x0000錛岀鍚?x0000%1= 0;絎簩涓彉閲忥紝鑷韓瀵歸綈鍊間負4錛屾寚瀹氬榻愬間負2錛屾墍浠ユ湁鏁堝榻愬間負2錛屾墍浠ラ『搴忓瓨鏀懼湪0x0002銆?x0003銆?x0004銆?x0005鍥涗釜榪炵畫 瀛楄妭涓紝絎﹀悎0x0002%2=0銆傜涓変釜鍙橀噺c鐨勮嚜韜榻愬間負2錛屾墍浠ユ湁鏁堝榻愬間負2錛岄『搴忓瓨鏀?br />鍦?x0006銆?x0007涓紝絎﹀悎 0x0006%2=0銆傛墍浠ヤ粠0x0000鍒?x00007鍏卞叓瀛楄妭瀛樻斁鐨勬槸C鐨勫彉閲忋傚張C鐨勮嚜韜榻愬間負4錛屾墍浠鐨勬湁鏁堝榻愬間負2銆傚張8%2=0,C 鍙崰鐢?x0000鍒?x0007鐨勫叓涓瓧鑺傘傛墍浠izeof(struct C)=8.

鍥?濡備綍淇敼緙栬瘧鍣ㄧ殑榛樿瀵歸綈鍊?

1.鍦╒C IDE涓紝鍙互榪欐牱淇敼錛歔Project]|[Settings],c/c++閫夐」鍗ategory鐨凜ode Generation閫夐」鐨凷truct Member Alignment涓慨鏀癸紝榛樿鏄?瀛楄妭銆?br />2.鍦ㄧ紪鐮佹椂錛屽彲浠ヨ繖鏍峰姩鎬佷慨鏀癸細#pragma pack .娉ㄦ剰:鏄痯ragma鑰屼笉鏄痯rogma.

浜?閽堝瀛楄妭瀵歸綈,鎴戜滑鍦ㄧ紪紼嬩腑濡備綍鑰冭檻?


聽聽聽 濡傛灉鍦ㄧ紪紼嬬殑鏃跺欒鑰冭檻鑺傜害絀洪棿鐨勮瘽,閭d箞鎴戜滑鍙渶瑕佸亣瀹氱粨鏋勭殑棣栧湴鍧鏄?,鐒跺悗鍚勪釜鍙橀噺鎸夌収涓婇潰鐨勫師鍒欒繘琛屾帓鍒楀嵆鍙?鍩烘湰鐨勫師鍒欏氨鏄妸緇撴瀯涓殑鍙橀噺鎸夌収 綾誨瀷澶у皬浠庡皬鍒板ぇ澹版槑,灝介噺鍑忓皯涓棿鐨勫~琛ョ┖闂?榪樻湁涓縐嶅氨鏄負浜嗕互絀洪棿鎹㈠彇鏃墮棿鐨勬晥鐜?鎴戜滑鏄劇ず鐨勮繘琛屽~琛ョ┖闂磋繘琛屽榻?姣斿:鏈変竴縐嶄嬌鐢ㄧ┖闂存崲鏃墮棿鍋? 娉曟槸鏄懼紡鐨勬彃鍏eserved鎴愬憳錛?br />聽聽聽聽聽聽聽聽 struct A{
聽聽聽聽聽聽聽聽聽聽 char a;
聽聽聽聽聽聽聽聽聽聽 char reserved[3];//浣跨敤絀洪棿鎹㈡椂闂?br />聽聽聽聽聽聽聽聽聽聽 int b;
}

reserved鎴愬憳瀵規垜浠殑紼嬪簭娌℃湁浠涔堟剰涔?瀹冨彧鏄搗鍒板~琛ョ┖闂翠互杈懼埌瀛楄妭瀵歸綈鐨勭洰鐨?褰撶劧鍗充嬌涓嶅姞榪欎釜鎴愬憳閫氬父緙栬瘧鍣ㄤ篃浼氱粰鎴戜滑鑷姩濉ˉ瀵歸綈,鎴戜滑鑷繁鍔犱笂瀹冨彧鏄搗鍒版樉寮忕殑鎻愰啋浣滅敤.

鍏?瀛楄妭瀵歸綈鍙兘甯︽潵鐨勯殣鎮?

聽聽聽 浠g爜涓叧浜庡榻愮殑闅愭偅錛屽緢澶氭槸闅愬紡鐨勩傛瘮濡傚湪寮哄埗綾誨瀷杞崲鐨勬椂鍊欍備緥濡傦細
unsigned int i = 0x12345678;
unsigned char *p=NULL;
unsigned short *p1=NULL;

p=&i;
*p=0x00;
p1=(unsigned short *)(p+1);
*p1=0x0000;
鏈鍚庝袱鍙ヤ唬鐮侊紝浠庡鏁拌竟鐣屽幓璁塊棶unsignedshort鍨嬪彉閲忥紝鏄劇劧涓嶇鍚堝榻愮殑瑙勫畾銆?br />鍦▁86涓婏紝綾諱技鐨勬搷浣滃彧浼氬獎鍝嶆晥鐜囷紝浣嗘槸鍦∕IPS鎴栬卻parc涓婏紝鍙兘灝辨槸涓涓猠rror,鍥犱負瀹冧滑瑕佹眰蹇呴』瀛楄妭瀵歸綈.

涓?濡備綍鏌ユ壘涓庡瓧鑺傚榻愭柟闈㈢殑闂:

濡傛灉鍑虹幇瀵歸綈鎴栬呰祴鍊奸棶棰橀鍏堟煡鐪?br />1. 緙栬瘧鍣ㄧ殑big little绔緗?br />2. 鐪嬭繖縐嶄綋緋繪湰韜槸鍚︽敮鎸侀潪瀵歸綈璁塊棶
3. 濡傛灉鏀寔鐪嬭緗簡瀵歸綈涓庡惁,濡傛灉娌℃湁鍒欑湅璁塊棶鏃墮渶瑕佸姞鏌愪簺鐗規畩鐨勪慨楗版潵鏍囧織鍏剁壒孌婅闂搷浣溿?/p>

鍏?鐩稿叧鏂囩珷:杞嚜http://blog.csdn.net/goodluckyxl/archive/2005/10/17/506827.aspx

聽ARM涓嬬殑瀵歸綈澶勭悊
from DUI0067D_ADS1_2_CompLib

3.13 type聽 qulifiers

鏈夐儴鍒嗘憳鑷狝RM緙栬瘧鍣ㄦ枃妗e榻愰儴鍒?/p>

瀵歸綈鐨勪嬌鐢?
1.__align(num)
聽聽 榪欎釜鐢ㄤ簬淇敼鏈楂樼駭鍒璞$殑瀛楄妭杈圭晫銆傚湪姹囩紪涓嬌鐢↙DRD鎴栬匰TRD鏃?br />聽聽 灝辮鐢ㄥ埌姝ゅ懡浠_align(8)榪涜淇グ闄愬埗銆傛潵淇濊瘉鏁版嵁瀵硅薄鏄浉搴斿榻愩?br />聽聽 榪欎釜淇グ瀵硅薄鐨勫懡浠ゆ渶澶ф槸8涓瓧鑺傞檺鍒?鍙互璁?瀛楄妭鐨勫璞¤繘琛?瀛楄妭
聽聽 瀵歸綈,浣嗘槸涓嶈兘璁?瀛楄妭鐨勫璞?瀛楄妭瀵歸綈銆?br />聽聽 __align鏄瓨鍌ㄧ被淇敼,浠栧彧淇グ鏈楂樼駭綾誨瀷瀵硅薄涓嶈兘鐢ㄤ簬緇撴瀯鎴栬呭嚱鏁板璞°?br />聽聽
2.__packed
聽 __packed鏄繘琛屼竴瀛楄妭瀵歸綈
聽 1.涓嶈兘瀵筽acked鐨勫璞¤繘琛屽榻?br />聽 2.鎵鏈夊璞$殑璇誨啓璁塊棶閮借繘琛岄潪瀵歸綈璁塊棶
聽 3.float鍙婂寘鍚玣loat鐨勭粨鏋勮仈鍚堝強鏈敤__packed鐨勫璞″皢涓嶈兘瀛楄妭瀵歸綈
聽 4.__packed瀵瑰眬閮ㄦ暣褰㈠彉閲忔棤褰卞搷
聽 5.寮哄埗鐢眜npacked瀵硅薄鍚憄acked瀵硅薄杞寲鏄湭瀹氫箟,鏁村艦鎸囬拡鍙互鍚堟硶瀹?br />聽 涔変負packed銆?br />聽聽聽聽 __packed int* p;聽 //__packed int 鍒欐病鏈夋剰涔?br />聽 6.瀵歸綈鎴栭潪瀵歸綈璇誨啓璁塊棶甯︽潵闂
聽 __packed struct STRUCT_TEST
聽{
聽 char a;
聽 int b;
聽 char c;
聽}聽 ;聽聽聽 //瀹氫箟濡備笅緇撴瀯姝ゆ椂b鐨勮搗濮嬪湴鍧涓瀹氭槸涓嶅榻愮殑
聽聽聽聽聽聽聽聽 //鍦ㄦ爤涓闂産鍙兘鏈夐棶棰?鍥犱負鏍堜笂鏁版嵁鑲畾鏄榻愯闂甗from CL]
//灝嗕笅闈㈠彉閲忓畾涔夋垚鍏ㄥ眬闈欐佷笉鍦ㄦ爤涓?
static char* p;
static struct STRUCT_TEST a;
void Main()
{
聽__packed int* q;聽 //姝ゆ椂瀹氫箟鎴恄_packed鏉ヤ慨楗板綋鍓峲鎸囧悜涓洪潪瀵歸綈鐨勬暟鎹湴鍧涓嬮潰鐨勮闂垯鍙互

聽p = (char*)&a;聽聽聽聽聽聽聽聽聽
聽q = (int*)(p+1);聽聽聽聽聽

聽*q = 0x87654321;
/*聽聽
寰楀埌璧嬪肩殑姹囩紪鎸囦護寰堟竻妤?br />ldr聽聽聽聽聽 r5,0x20001590 ; = #0x12345678
[0xe1a00005]聽聽 mov聽聽聽聽聽 r0,r5
[0xeb0000b0]聽聽 bl聽聽聽聽聽聽 __rt_uwrite4聽 //鍦ㄦ澶勮皟鐢ㄤ竴涓啓4byte鐨勬搷浣滃嚱鏁?
聽聽聽聽聽
[0xe5c10000]聽聽 strb聽聽聽聽 r0,[r1,#0]聽聽 //鍑芥暟榪涜4嬈trb鎿嶄綔鐒跺悗榪斿洖淇濊瘉浜嗘暟鎹紜殑璁塊棶
[0xe1a02420]聽聽 mov聽聽聽聽聽 r2,r0,lsr #8
[0xe5c12001]聽聽 strb聽聽聽聽 r2,[r1,#1]
[0xe1a02820]聽聽 mov聽聽聽聽聽 r2,r0,lsr #16
[0xe5c12002]聽聽 strb聽聽聽聽 r2,[r1,#2]
[0xe1a02c20]聽聽 mov聽聽聽聽聽 r2,r0,lsr #24
[0xe5c12003]聽聽 strb聽聽聽聽 r2,[r1,#3]
[0xe1a0f00e]聽聽 mov聽聽聽聽聽 pc,r14
*/

/*
濡傛灉q娌℃湁鍔燺_packed淇グ鍒欐眹緙栧嚭鏉ユ寚浠ゆ槸榪欐牱鐩存帴浼氬鑷村鍦板潃澶勮闂け璐?br />[0xe59f2018]聽聽 ldr聽聽聽聽聽 r2,0x20001594 ; = #0x87654321
[0xe5812000]聽聽 str聽聽聽聽聽 r2,[r1,#0]
*/

//榪欐牱鍙互寰堟竻妤氱殑鐪嬪埌闈炲榻愯闂槸濡備綍浜х敓閿欒鐨?br />//浠ュ強濡備綍娑堥櫎闈炲榻愯闂甫鏉ラ棶棰?br />//涔熷彲浠ョ湅鍒伴潪瀵歸綈璁塊棶鍜屽榻愯闂殑鎸囦護宸紓瀵艱嚧鏁堢巼闂
}


erran 2007-10-16 22:56 鍙戣〃璇勮
]]>
杞細C++瀵硅薄鍐呭瓨甯冨眬http://m.shnenglu.com/erran/archive/2007/10/14/34184.htmlerranerranSat, 13 Oct 2007 16:37:00 GMThttp://m.shnenglu.com/erran/archive/2007/10/14/34184.htmlhttp://m.shnenglu.com/erran/comments/34184.htmlhttp://m.shnenglu.com/erran/archive/2007/10/14/34184.html#Feedback0http://m.shnenglu.com/erran/comments/commentRss/34184.htmlhttp://m.shnenglu.com/erran/services/trackbacks/34184.html寮曠敤錛歨ttp://m.shnenglu.com/stdyh/archive/2007/01/08/17442.html

C++瀵硅薄鍐呭瓨甯冨眬


鍐欒繖涓枃绔犲畬鍏ㄦ槸鍥犱負鎯寵鎼炴竻妤?vc 鎬庝箞甯冨眬姣忎釜 c++ 瀵硅薄,浠ュ強鎬庢牱瀹屾垚鎸囬拡鐨勮漿鎹㈢殑榪囩▼.
銆銆鍏堥棶涓涓棶棰?涓や釜涓嶅悓綾誨瀷鐨勬寚閽堢浉浜掕漿鎹互鍚?浠栦滑鍦ㄦ暟鍊間笂鏄竴鏍風殑鍚?姣斿:

銆銆銆銆int nValue = 10;
銆銆銆銆int *pInt = &nValue;
銆銆銆銆void *pVoid = pInt;
銆銆銆銆char *pChar = (char*)pInt;


銆 銆榪欎簺鎸囬拡鐨勫?涓嶆槸璇存寚閽堟寚鍚戠殑鍐呭瓨鐨勫唴瀹?鏄竴鏍風殑鍚? 濡傛灉浣犵殑鍥炵瓟鏄? yes,閭e鏋滄槸涓涓被鐨勭戶鎵夸綋緋誨憿?鍦ㄧ戶鎵跨被鍚戝熀綾昏漿鎹㈢殑榪囩▼涓?鎸囬拡鐨勬暟鍊艱繕鏄笉鍙樺寲鐨勪箞?濡傛灉浣犵殑鍥炵瓟鏄?涓嶄竴瀹氫細鍙樺寲,瑕佺湅綾葷殑浣撶郴鏄庝箞璁捐鐨? "鐨勮瘽,閭f伃鍠滀綘,涓嶇敤鐪嬩笅鍘諱簡.濡傛灉浣犺繕涓嶇‘瀹氱┒绔熷彉榪樻槸涓嶅彉,絀剁珶鍝簺鍙?鍝簺涓嶅彉,絀剁珶涓轟粈涔堣鍙樹負浠涔堜笉鍙樼殑璇?鎺ョ潃鐪嬩笅鏉?

銆 銆c++ 鏍囧噯涓嶈瀹?c++ 瀹炵幇鐨勬椂鍊欑殑瀵硅薄鐨勫叿浣撶殑鍐呭瓨甯冨眬,闄や簡鍦ㄦ煇浜涙柟闈㈡湁灝忕殑闄愬埗浠ュ,c++ 瀵硅薄鍦ㄥ唴瀛橀噷闈㈢殑甯冨眬瀹屽叏鏄敱緙栬瘧鍣ㄨ嚜琛屽喅瀹?榪欓噷鎴戜篃鍙槸璁ㄨ vc++ .net 2003 build 7.1.3091 鐨勫疄鐜版柟寮?鎴戝茍娌℃湁鍦?vc5 vc6 vc.net 2002 浠ュ強鍏朵粬鐨?2003 build 涓婇潰鍋氳繃嫻嬭瘯,緇撹涔熻涓嶉傚悎閭d簺緙栬瘧騫沖彴.榪欎簺灞炰簬緙栬瘧鍣ㄥ叿浣撳疄鐜?ms 淇濈暀鏈夊湪涓嶉氱煡浣犳垜鐨勬儏鍐典笅浣滃嚭鏇存敼鐨勬潈鍒?搴熻瘽榪欎箞澶?椹笂寮濮?

銆銆瀵逛簬 c 鐨勫唴寤烘寚閽堢殑杞崲,緇撴灉鏄笉鐢ㄥ璁ㄨ鐨?鎴戜滑鍙槸璁ㄨ c++ 鐨勫璞?浠庢渶綆鍗曠殑寮濮?

銆銆銆銆class CBase
銆銆銆銆{
銆銆銆銆public:
銆銆銆銆銆銆int m_nBaseValue;
銆銆銆銆};


銆銆榪欐牱鐨勪竴涓被鍦ㄥ唴瀛橀噷鏀劇疆鏄潪甯哥畝鍗曠殑,浠栧崰鏈?涓?bytes 鐨勭┖闂?涓嶇敤澶氳,鎴戜滑浠庝粬媧劇敓涓涓被鍑烘潵.

銆銆銆銆class CDerive1 : public CBase
銆銆銆銆{
銆銆銆銆public:
銆銆銆銆銆銆int m_nDerive1Value;
銆銆銆銆};


銆 銆CDerive1 鐨勫璞″湪鍐呭瓨閲岄潰鏄庝箞鏀劇殑鍛? 涔熷緢綆鍗?鍗犳湁8涓?bytes 鐨勭┖闂?鍓?涓?bytes 灞炰簬 CBase 綾?鍚庡洓涓? bytes 灞炰簬鑷繁.涓涓狢Derive1 鐨勬寚閽堣漿鎹㈡垚涓涓?CBase 鐨勬寚閽?緇撴灉鏄竴鏍風殑.涓嬮潰鎴戜滑鍔犱笂澶氶噸緇ф壙鐪嬬湅.

銆銆銆銆class CFinal : public CDerive,public CBase // 榪欓噷鐨?CDerive 鏄竴涓拰 CBase 宸笉澶氱殑鍩虹被
銆銆銆銆{
銆銆銆銆public:
銆銆銆銆銆銆int m_nFinalValue;
銆銆銆銆};


銆 銆CFinal 鐨勫璞″湪鍐呭瓨閲岄潰鐨勫竷灞紼嶅井澶嶆潅涓鐐?浣嗘槸涔熷緢瀹規槗鎯寵薄,浠栧崰鏈?12 涓?bytes 鐨勭┖闂?鍓?涓睘浜? CDerive,涓棿4涓睘浜?CBase,鍚庨潰4涓墠鏄嚜宸辯殑.閭d竴涓?CFinal 鐨勬寚閽堣漿鎹㈡垚涓涓?CDerive 鎸囬拡,鏁板間細鍙樹箞? 杞崲鎴愪竴涓?CBase 鎸囬拡鍛?鍙堜細鍙樺寲涔?絳旀鏄?鍓嶄竴涓笉鍙?鍚庝竴涓鍙樺寲,閬撶悊闈炲父鐨勬槑鏄?CFinal 瀵硅薄鐨勫紑澶村垰濂芥槸涓涓? CDerive 瀵硅薄,鑰?CBase 瀵硅薄鍗村湪 CFinal 瀵硅薄鐨勪腑闂?鑷劧鏄鍙樺寲鐨勪簡,鍏蜂綋鎬庝箞鍙樺寲鍛? 鍔?4 灝? ok(鑷劧瑕佹鏌ユ槸鍚︽槸絀烘寚閽?.

銆銆銆銆CBase *pBase = pFinal ? (CBase*)((char*)pFinal + sizeof(CDerive)) : 0;// 褰撲綘鍐欎笅 pBase = pFinal 鐨勬椂鍊?鍏跺疄鏄繖鏍風殑

銆銆榪欑涓嶅甫 virtual 鐨勭戶鎵垮氨榪欎箞綆鍗?鍙槸鍔犱笂涓涓?offset 鑰屽凡.涓嬮潰鎴戜滑鐪嬬湅濡傛灉鍔犱笂 virtual function 鐨勬椂鍊欐槸浠涔堟牱瀛愮殑鍛?
榪樻槸浠庣畝鍗曠被寮濮?

銆銆銆銆class CBase
銆銆銆銆{
銆銆銆銆public:
銆銆銆銆銆銆virtual void VirtualBaseFunction(){}
銆銆銆銆銆銆int m_nBaseValue;
銆銆銆銆};


銆 銆榪欓噷鍒繪剰娌℃湁浣跨敤 virtual destructor,鍥犱負榪欎釜鍑芥暟紼嶅井鏈変簺涓嶅悓.榪樻槸鍚屾牱鐨勯棶棰?CBase 綾誨湪鍐呭瓨涓婂崰澶氬ぇ鐨勭┖闂?榪樻槸 4 bytes 涔? 絳旀鏄?no, 鍦ㄦ垜鐨勭紪璇戝櫒涓婇潰鏄?8 bytes,澶氬嚭鏉ョ殑 4 bytes 鏄?__vfptr(watch 紿楀彛鐪嬭鐨勫悕瀛?,浠栨槸涓涓寚閽?鎸囧悜浜嗙被鐨?vtable,閭d粈涔堟槸 vtable 鍛?浠栨槸鐢ㄦ潵騫蹭粈涔堢殑鍛? vtable 鏄敤鏉ユ敮鎻? virtual function 鏈哄埗鐨?浠栧叾瀹炴槸涓涓嚱鏁版寚閽堟暟緇?騫朵笉絳夊悓浜巆/c++璇█閲岄潰鐨勬寚閽堟暟緇?鍥犱負浠栦滑鐨勭被鍨嬪茍涓嶄竴瀹氭槸涓鏍風殑.)浠栫殑姣忎竴涓厓绱犻兘鎸囧悜浜嗕竴涓綘瀹氫箟鐨? virtual function,榪欐牱閫氳繃涓涓腑闂村眰鏉ュ埌杈懼姩鎬佽繛緙栫殑鏁堟灉,榪欎簺鎸囬拡鏄湪紼嬪簭榪愯鐨勬椂鍊欏噯澶囧Ε褰撶殑,鑰屼笉鏄湪緙栬瘧鐨勬椂鍊欏噯澶囧Ε褰撶殑,榪欎釜灝辨槸鍔ㄦ佽仈緙栫殑 鐩殑,鍏蜂綋鏄敱璋佹潵璁劇疆榪欎簺鎸囬拡鐨勫憿?constructor/destructor/copy constructor/assignment operator浠栦滑瀹屾垚鐨?涓嶇敤濂囨?緙栬瘧鍣ㄤ細鍦ㄤ綘鍐欑殑榪欎簺鍑芥暟閲岄潰瀹夋彃浜涘繀瑕佺殑浠g爜鐢ㄦ潵璁劇疆 vtable 鐨勫?濡傛灉浣犳病鏈夊啓榪欎簺鍑芥暟,緙栬瘧鍣ㄤ細鍦ㄩ傚綋鐨勬椂鍊欏府浣犵敓鎴愯繖浜涘嚱鏁?鏄庣櫧涓鐐? vtable 鏄敤鏉ユ敮鎸?virtual function 鏈哄埗鐨?鑰岄渶瑕?virtual 鏈哄埗鐨勭被鍩烘湰涓婇兘浼氱敱涓涓?__vfptr 鎸囧悜浠栬嚜宸辯殑 vtable.鍦ㄨ皟鐢?virtual function鐨勬椂鍊?緙栬瘧鍣ㄨ繖鏍峰畬鎴?

銆銆銆pBase->VirtualBaseFunction(); => pBase->__vfptr[0]();// 0 鏄綘鐨剉irtual function 鍦?vtable 涓殑 slot number,緙栬瘧鍣ㄥ喅瀹?/font>

銆 銆鐜板湪搴旇寰堟兂璞?CBase 鐨勫ぇ灝忎簡鍚?閭h繖涓?__vfptr 鏄斁鍒頒粈涔堜綅緗殑鍛? 鍦?m_nBaseValue 涔嬪墠榪樻槸涔嬪悗鍛? 鍦ㄦ垜鐨勭紪璇戝櫒涓婄湅鏉?鏄湪涔嬪墠,涓轟粈涔堣鏀懼埌涔嬪墠,鏄洜涓哄湪閫氳繃 鎸囧悜綾繪垚鍛樺嚱鏁扮殑鎸囬拡璋冪敤 virtual function 鐨勬椂鍊欒兘灝戜簺浠g爜(鎸囨眹緙栦唬鐮?,榪欎釜鍘熷洜榪欓噷灝變笉娣卞叆璁ㄨ浜?鏈夊叴瓚g殑鍚屽鍙互鐪嬬湅 inside the c++ object model 涓涔?
銆銆鎺ヤ笅鏉?鎴戜滑鍔犱笂緇ф壙鏉ョ湅鐪?

銆銆銆銆class CDerive1 : public CBase
銆銆銆銆{
銆銆銆銆public:
銆銆銆銆銆銆virtual void VirtualDerive1Function();
銆銆銆銆};


銆 銆榪欎釜鏃跺欎綘涔熻瑕佽,鍐呭瓨甯冨眬璺熸病鏈?virtual 鏄竴鏍風殑,鍙笉榪囨瘡涓被澶氫簡涓涓?__vfptr 鑰屽凡,鍛?..榪欎釜鏄笉瀵圭殑,鍦ㄦ垜鐨勭紪璇戝櫒涓婇潰 涓や釜綾誨叡浜悓涓涓?__vfptr, vtable 閲岄潰鏀炬湁涓や釜鎸囬拡,涓涓槸涓や釜綾誨叡浜殑,涓涓彧灞炰簬 CDerive1 綾?璋冪敤鐨勬椂鍊欏浣曞憿?

銆銆銆pDerive1->VirtualDerive1Function() => pDerive1->__vfptr[1]();
銆銆銆pDerive1->VirtualBaseFunction() => pDerive1->__vfptr[0]();


銆銆鑷充簬鎸囬拡鐨勭浉浜掕漿鎹?鏁板艱繕鏄病鏈夊彉鍖栫殑(涔熸鏄拷姹傝繖縐嶆晥鏋?鎵浠ユ妸 __vfptr 鏀懼埌綾葷殑寮澶?鍥犱負璋冩暣 this 鎸囬拡涔熸槸瑕佸崰鏈夎繍琛屾椂鐨勬椂闂寸殑).

銆 銆鐜板湪鍔犱笂澶氶噸緇ф壙鐬х灖,浠g爜鎴戜笉鍐欎笂鏉ヤ簡,灝辮窡涓婇潰鐨?CFinal, CDerive, CBase 浣撶郴涓鏍?鍙槸姣忎釜綾誨涓涓猇irtualxxxFunction鍑烘潵,榪欎釜鏃跺欑殑鎸囬拡璋冩暣榪樻槸娌℃湁浠涔堝彉鍖?鎵浠ユ垜浠彧鏄湅鐪?vtable 鐨勬儏鍐?浣犱細璇?CDerive 鍜?CFinal 鍏變韓涓涓?__vfptr,鑰?CBase 鏈変竴涓嚜宸辯殑 __vfptr,鑰?CFinal 鐨? __vfptr 鏈?2 涓猻lot,榪欎釜緇撹鏄紜殑. 鍚屾椂浣犱篃浼氳 閫氳繃 CFinal 綾昏皟鐢?CBase 鐨勫嚱鏁版槸瑕佽繘琛屾寚閽堣皟鏁寸殑,yes you'r right,涓嶄粎浠呮槸 this 鎸囬拡璋冩暣(鍛?this 鎸囬拡浼氭垚涓?function 鐨勪竴涓弬鏁?,榪樿璋冩暣 vtable 鐨勫?

銆銆銆pFinal->VirtualBaseFunction() => (CBase*)((char*)pFinal + sizeof(CDerive))->__vfptr[0]();

銆銆銆杞崲鎴?asm 鐨勪唬鐮佸ぇ綰︽槸榪欐牱鐨?

銆銆銆mov eax,[pFinal] ; pFinal is a local object,pFinal will be epb - xx
銆銆銆add eax,8 ; 8 = sizeof(CDerive)
銆銆銆mov ecx,eax ; ecx is this pointer
銆銆銆mov edx,[eax] ; edx = vtable address
銆銆銆call [edx] ; call vtable[0]


銆銆鍐欏埌榪欓噷涔熷氨鏄庣櫧this鎸囬拡鏄庝箞璋冩暣鐨?甯?virtual function 鐨勭戶鎵夸篃涓嶅鏉?this鎸囬拡璋冩暣涔熸槸寰堢畝鍗曠殑,涓嬮潰鐪嬫渶澶嶆潅鐨勯儴鍒?virtual inheritance.

銆 銆鎴戠殑緙栬瘧鍣ㄦ敮鎸佽櫄鎷熺戶鎵跨殑鏂瑰紡鍜岃櫄鍑芥暟鐨勬柟寮忓樊涓嶅,閮芥槸閫氳繃涓涓?table 瀹屾垚,鍙槸榪欎釜灝辯湅涓嶅埌 vc 璧嬩簣鐨勫悕瀛椾簡,鎴戜滑鍙粬 vbtable 鍚?緙栬瘧鍣ㄥ悓鏍峰湪綾婚噷闈㈠姞鍏ヤ竴涓寚鍚?vbtable 鐨勬寚閽?鎴戜滑鍙粬 __vbptr 鍚?榪欎釜鎸囬拡鎸囧悜浜?vbtable ,鑰? vbtable 閲岄潰鐨勬瘡涓欏瑰搴斾簡涓涓熀綾?vbtable 璁板綍浜嗘瘡涓熀綾葷殑鏌愪竴涓亸縐婚噺,閫氳繃榪欎釜鍋忕Щ閲忓氨鑳借綆楀嚭鍏蜂綋綾葷殑鎸囬拡鐨勪綅緗?鐪嬩釜綆鍗曠殑渚嬪瓙:

銆銆銆class CBase
銆銆銆{
銆銆銆public:
銆銆銆銆銆virtual ~CBase(){}
銆銆銆};

銆銆銆class CMid1 : public virtual CBase
銆銆銆{
銆銆銆public:
銆銆銆銆銆virtual ~CMid1(){}
銆銆銆銆銆int m_nMid1;
銆銆銆};

銆銆銆class CMid2 : public virtual CBase
銆銆銆{
銆銆銆public:
銆銆銆銆銆virtual ~CMid2(){}
銆銆銆銆銆int m_nMid2;
銆銆銆};

銆銆銆class CFinal : public CMid1,public CMid2
銆銆銆{
銆銆銆public:
銆銆銆銆銆virtual ~CFinal(){}
銆銆銆銆銆int m_nFinal;
銆銆銆};

銆銆銆CFinal final;
銆銆銆CFinal *pFinal = &final;聽聽聽 // pFinal = 0x0012feb4;
銆銆銆CBase *pBase = pFinal; // pBase = 0x0012fec8 = pFinal + 0x14;
銆銆銆CMid1 *pMid1 = pFinal; // pMid1 = 0x0012feb4 = pFinal;
銆銆銆CMid2 *pMid2 = pFinal; // pMid2 = 0x004210b4 = pFinal;


銆 銆緇撴灉璁╀綘鍚冩儕鍚? 鏈濂囨殑鍦版柟灞呯劧鏄?CMid2 鍜?CMid1 鐨勫湴鍧灞呯劧鏄竴鏍風殑,榪欎釜鏄洜涓?vc 鎶?vbtable 鏀懼埌浜? CFinal 綾葷殑寮澶寸殑鍘熷洜,鑰孋Mid1 鍜?CMid2 涔熷悓鏍瘋浣跨敤榪欎釜 vbtable, 鎵浠?榪欎釜涓変釜鐨勫湴鍧涔熷氨蹇呴』鐩稿悓浜?閭? CBase 鐨勫湴鍧鏄庝箞鍑烘潵鐨勫憿? 鍛?..鍒氬垰鎴戜滑璇翠簡 vbtable 鏀懼埌浜咰Final 鐨勫紑澶?vc 涓瀹氫細鏀懼湪寮澶村悧?絳旀鏄笉涓瀹?榪欎釜紼嶅悗瑙i噴).鍦ㄦ垜鐨勬満鍣ㄤ笂闈?final 瀵瑰簲鍐呭瓨鐨勭涓涓?dword 鏄? 0x00426030,鏌ョ湅榪欎釜鍦板潃,絎竴涓猟word 鏄?0 ,絎簩涓氨鏄?0x14,鍒氬ソ鍜?pBase 鐨勫亸縐葷浉鍚?榪欎釜鍙槸宸у悎,涔熻浣犳崲涓被鐨勭戶鎵夸綋緋誨氨瀹屽叏涓嶅悓浜?浣嗘槸鎴戝彧鏄兂璇存槑涓鐐?鍩虹被鐨勫亸縐昏綆楁槸鍜?vbtable 鐨勫肩浉鍏寵仈鐨?涓嬮潰鎴戜滑灝辨潵鐪嬬湅 vc 鏄庝箞璁$畻榪欎簺鍋忕Щ鐨?
銆銆vc 鍦ㄥ垎鏋愭垜浠殑浠g爜鐨勬椂鍊?鐢熸垚浜嗕竴浠界被鐨勭戶鎵夸綋緋諱俊鎭?鍏朵腑鏈変竴涓彨 thisDisplacement 鐨刜PMD緇撴瀯:

銆銆銆銆struct _PMD // total undocumented
銆銆銆銆{
銆銆銆銆銆銆int mdisp; // i think the meaning is Multiinheritance DISPlacement
銆銆銆銆銆銆int pdisp; // Pointer to vbtable DISPlacement
銆銆銆銆銆銆int vdisp; // Vbtable DISPlacement
銆銆銆銆};


銆 銆緇撴瀯鐨勫悕瀛楀拰鎴愬憳鍙橀噺鐨勫悕瀛楃‘紜疄瀹炴槸 vc 鐨勫悕瀛?鍦?watch 紿楀彛杈撳叆 (_PMD*)0 灝辮兘鐪嬪埌榪欎釜緇撴瀯鐨勮緇嗕俊鎭?,姣忎釜瀛楁鐨勫惈涔夊嵈鏄垜鑷繁鐚滄祴鍑烘潵鐨?mdisp 澶ф鐢ㄦ潵琛ㄧず澶氶噸緇ф壙(鍖呮嫭鍗曚竴緇ф壙)鐨勬椂鍊欑殑鍋忕Щ閲?pdisp 琛ㄧず vbtable 鐨勫亸縐婚噺,鑰?vdisp 琛ㄧず綾誨湪 vbtable 閲岄潰鐨勪笅鏍?閭d箞鏈変簡榪欎釜緇撴瀯鎬庢牱鎵嶈兘瀹屾垚鎸囬拡鐨勮漿鎹㈠憿?鍋囧鎴戜滑鏈変竴涓淳鐢熺被鎸囬拡 pFinal,瑕佽漿鎹㈡垚涓涓壒瀹氱殑鍩虹綾?鎴戜滑棣栧厛瑕佺煡閬撳拰榪欎釜鍩虹被瀵瑰簲鐨?_PMD 緇撴瀯鐨勪俊鎭?榪欎釜淇℃伅鐨勮幏鍙?鎴戞殏鏃舵病鏈夋壘鍒頒竴涓潪甯告柟渚跨殑鏂規硶,鐜板湪鎴戜嬌鐢ㄧ殑鏂規硶涓嬮潰浼氭湁鎻忚堪),鏈変簡榪欎釜淇℃伅浠ュ悗,杞崲灝辨柟渚夸簡.棣栧厛鎵懼埌 vbtabel 鐨勫湴鍧 *(pFinal + pdisp),鐒跺悗鎵懼埌鍩虹被鐨勫亸縐?*(*(pFinal + pdisp) + vdisp) 榪欎釜鍋忕Щ鍊兼槸鐩稿vbtable鐨?鎵浠ヨ繕瑕佸姞涓?vbtable鐨勫亸縐?鏈鍚庡姞涓?mdisp鐨勫亸縐?濡備笅:

銆銆char *pFinal = xxx; // need a init value
銆銆char *pBase; // we must calc
銆銆pBase = pFinal + mdisp + *(int *)(*(int *)(pFinal + pdisp) + vdisp) + pdisp;


銆銆娉ㄦ剰: 褰?pdisp < 0 鐨勬椂鍊欏氨琛ㄧず榪欎釜綾繪病鏈?vbtable 鐩存帴浣跨敤 pFinal + mdisp 灝卞緱鍒扮粨鏋滀簡.
銆銆鎵浠ヨ繖涓粨鏋勬槸涓涓氱敤鐨勭粨鏋?涓撻棬鐢ㄤ綔綾誨瀷杞崲,涓嶇鏄湁鏃犺櫄緇ф壙閮借兘浣跨敤榪欎釜緇撴瀯榪涜綾誨瀷杞崲.

銆銆閫氳繃榪欎釜緇撴瀯,鎴戜滑涔熻兘鐪嬪埌 vc 鏄庢牱甯冨眬榪欎釜 object 鐨?

銆銆鐪嬪埌榪欓噷,涔熻浣犺澶у懠涓鍙f皵,濡堝鍛,涓涓被鍨嬭漿鎹㈣榪欎箞鐨勯夯鐑﹀悧?鎴戠洿鎺ュ啓 pBase = pFinal 涓嶅氨鍙互浜嗗悧? 鎭枩浣犺繕娌℃湁琚垜蹇芥偁寰楁檿澶磋漿鍚?鍝堝搱.鍏跺疄浣犲啓涓嬮偅琛岃鍙ョ殑鏃跺?緙栬瘧鍣ㄥ湪甯綘鍋氳繖涓漿鎹?澶х害鐢熸垚涓嬮潰鐨勪唬鐮?br />
銆銆銆銆mov eax,[pFinal] ;final address
銆銆銆銆mov ecx,[eax] ; vbtable address *(int *)(pFinal + pdisp)
銆銆銆銆mov edx,eax ; save to edx
銆銆銆銆add edx,[ecx + 4] ; ecx + 4 is (*(int *)(pFinal + pdisp) + vdisp)
銆銆銆銆mov [pBase],edx ; edx = pFinal + mdisp + *(int *)(*(int *)(pFinal + pdisp) + vdisp) + pdisp;
銆銆銆銆; here mdisp = 0, pdisp = 0, vdisp = 4


銆 銆涔熻浣犺璇翠簡,鎴戣榪欎簺涓滆タ鏉ュ共浠涔?瑕佽漿鎹㈢殑鏃跺欑洿鎺ヨ漿鎹㈠氨濂戒簡,緙栬瘧鍣ㄤ細甯仛,鐨勭‘,澶у鏁扮殑鏃跺欑‘瀹炴槸榪欐牱,浣嗘槸,鍦ㄦ煇浜涙椂鍊欏嵈騫朵笉濡傛,鐜板湪浣? 瑕佸疄鐜頒竴涓姛鑳?杈撳叆涓涓寚閽?杈撳叆涓涓?_PMD 緇撴瀯,浣犺瀹炵幇涓涓狝djustPointer 鐨勫嚱鏁版潵鐢熸垚鍙︿竴涓寚閽?榪欎釜鏃跺欎綘涔熷彧鑳借繖鏍峰畬鎴愪簡,鍥犱負鎴戞病鏈夌粰浣犱袱涓寚閽堢殑鍚嶅瓧,灝辯畻緇欎簡浣犲瓧絎︿覆褰㈠紡鐨勫悕瀛椾篃娌℃湁鐢?鍛?...浣犱篃璁鎬細璇?鍔炴硶 鏄湁鐨?鐨勭‘鏄湁,妯℃澘灝辮兘瀹炵幇榪欑鍔熻兘,鍛?.榪欎釜鎴戜滑鏆傛椂涓嶈璁哄叿浣撶殑瀹炵幇緇嗚妭.涔熻浣犺闂簡,絀剁珶浠涔堟椂鍊欎細鍘誨疄鐜拌繖縐嶅惉閮芥病鏈夊惉榪囩殑鍔熻兘,鍏跺疄榪? 涓嚱鏁版槸鐪熸瀛樺湪鐨?鍙笉榪囦笉鏄敱浣犳潵瀹炵幇鐨?鑰屾槸 ms 鐨勪漢瀹炵幇鐨?浣犲彧鐢ㄥ啓涓涓?甯︽湁 c++ 寮傚父鐨勭▼搴?浣跨敤 ida 鍙嶆眹緙?鐒跺悗鏌ユ壘鍑芥暟,灝辮兘鎵懼埌榪欎釜鍑芥暟浜?浠栫敤鏉ュ湪寮傚父澶勭悊鏃跺垱寤?catch 鎵闇瑕佺殑 object.鑷充簬榪欎釜璇︾粏鐨勪俊鎭?璇鋒湡寰?鎴戜細鏈蹇熷害鍐欏嚭鍏充簬 vc 鏄庢牱瀹炵幇 c++ 寮傚父鐨勬枃绔犳潵.

銆銆鏈鍚庝簡,璇磋閭d釜 _PMD 緇撴瀯鐨勮幏鍙栨柟寮?鐪嬬殑鏃跺欎笉瑕佸悆鎯?鏂規硶姣旇緝鐨勯夯鐑?姣斿鎴戞兂鐭ラ亾鍜?CFinal 綾葷浉鍏崇殑 _PMD 淇℃伅,鍏堟柊寤哄伐浣?鍐欎笅 throw pFinal 榪欐牱鐨勮鍙?緙栬瘧,鍦ㄨ繖涓鍙ョ殑鍦版柟璁劇疆鏂偣,榪愯,杞埌鍙嶆眹緙?榪涘叆 __CxxThrowException@8 鍑芥暟,榪欎釜鏃跺欎笉鍑烘剰澶栦綘鑳界湅鍒頒竴涓彨 pThrowInfo 鐨勪笢瑗?濡傛灉鐪嬩笉鍒?璇鋒墦寮"鏄劇ず絎﹀彿鍚?閫夐」),鍦?watch 紿楀彛閲岄潰杈撳叆pThrowInfo,灞曞紑浠?鐪嬪埌涓涓猵CatchableTypeArray,璁板綍涓嬩粬鐨? nCacthableTypes鐨勫?鐒跺悗鍦?watch 閲岄潰杈撳叆
pThrowInfo->pCatchableTypeArray->arrayOfCatchableTypes[0] 鍒?pThrowInfo->pCatchableTypeArray->arrayOfCatchableTypes[n], n 灝辨槸浣犲垰鍒氳褰曠殑鍊煎噺1,鍐嶅睍寮浠栦滑,浣犲氨鑳界湅鍒頒竴涓?thisDisplacement 鐨勬暟鎹?緇х畫灞曞紑灝辨槸 mdisp 絳夌瓑浜?寰堟槸楹葷儲鍚?鍝?.浣犲凡緇忕寽鍒頒簡,榪欎釜鏄拰寮傚父鏈夊叧緋葷殑.

銆銆鍚庤: 榪欐鏃墮棿,鎴戜竴鐩村湪璇諱簺鍙嶆眹緙栦箣鍚庣殑浠g爜,涔熼鏈変簺蹇冨緱,鎵浠ユ墠鏈夋兂娉曞啓涓浜涙枃绔?鎺㈣ vc 緙栬瘧鍣ㄩ矞涓轟漢鐭?澶繃鐙傚浜?鐨勭瀵?榪欎釜鏂歸潰鐨勬枃绔犱篃鏈変漢鍐欒繃,閭d簺鏂囩珷涔熺粰鎴戜笉灝戠殑鍚彂,鎴戜笉璁や負鑷繁鏄涓涓彂鐜拌繖浜涚瀵嗙殑浜?浣嗘槸鑷沖皯鎴戣嚜宸辯煡閬? 鐨?鎴戞槸絎竴涓妸榪欎簺涓滆タ鍐欏嚭鏉ョ殑浜?鏂囩珷閲岄潰浣滃ⅷ澶氱殑閮ㄥ垎閮芥槸鑷繁鍙戠幇鐨?灝辮繖涓枃绔犻噷闈㈢殑鍐呭鏉ヨ,inside the c++ object model 鏄湁姣旇緝璇︾粏鐨勬弿鍐?浣嗘槸浠栧茍涓嶆槸杞崲閽堝 vc 榪欎釜緙栬瘧鍣ㄧ殑瀹炵幇,鑰?_PMD 榪欎釜緇撴瀯鎴戜篃娌℃湁鍦ㄤ粈涔堝湴鏂硅鏈変漢鎻忚堪榪?鍙槸鍦? windows develop network 鐨?002騫?2鏈堢殑鏉傚織涓婄湅鏈変漢鎻愬埌榪囪繖涓粨鏋?鍙儨浠栧嵈娌℃湁浜嗚В(鑷沖皯浠栧湪浠栧彂琛ㄦ枃绔犵殑鏃跺欐槸濡傛槸璇寸殑)榪欎釜緇撴瀯鐨勭敤澶?姝f槸鍥犱負榪欎釜鍘熷洜,鎴戞墠鏈夊啓 榪欎釜鏂囩珷浠ュ強鍚庣畫鏂囩珷鐨勫啿鍔?.鎵浠?榪欎釜鏂囩珷涔熺畻鏄垜鑷繁鐨勫師鍒涘惂.榪欎釜鏂囦歡铏界劧鍜屾父鎴忓埗閫犳病鏈夊お澶х殑鍏崇郴,浣嗘槸灝?T 鑷娓呴珮,涓嶆効鎰忚嚜宸辯殑鏂囩珷琚竴甯笉鎳傜殑浜鴻瘎浠鋒潵璇勪環鍘葷殑,鎵浠ヤ篃娌℃湁鍙戝埌閭d簺钁楀悕鐨?xxx 緗戠珯,鍙彂 goldpoint.杞澆璇鋒敞鏄庡嚭澶?灝?T 瀵硅嚜宸辯殑絎竴涓師鍒涙枃绔犳瘮杈冪弽鎯?姣旇緝閲嶈,璋㈣阿).




erran 2007-10-14 00:37 鍙戣〃璇勮
]]>
杞細鍏充簬璋冪敤綰﹀畾(cdecl銆乫astcall銆併乼hiscall) 鐨勪竴鐐圭煡璇?/title><link>http://m.shnenglu.com/erran/archive/2007/10/14/34182.html</link><dc:creator>erran</dc:creator><author>erran</author><pubDate>Sat, 13 Oct 2007 16:33:00 GMT</pubDate><guid>http://m.shnenglu.com/erran/archive/2007/10/14/34182.html</guid><wfw:comment>http://m.shnenglu.com/erran/comments/34182.html</wfw:comment><comments>http://m.shnenglu.com/erran/archive/2007/10/14/34182.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/erran/comments/commentRss/34182.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/erran/services/trackbacks/34182.html</trackback:ping><description><![CDATA[ <div id="hvzpftn" class="postbody"> <div id="hvzpftn" class="tit">寮曠敤錛歨ttp://m.shnenglu.com/oosky/archive/2007/01/08/17422.html<br /><br />鍑芥暟璋冪敤瑙勮寖<br /><br /><div id="hvzpftn" class="cnt"><p align="left">褰撻珮綰ц璦鍑芥暟琚紪璇戞垚鏈哄櫒鐮佹椂錛屾湁涓涓棶棰樺氨蹇呴』瑙e喅錛氬洜涓篊PU娌℃湁鍔炴硶鐭ラ亾涓涓嚱鏁拌皟鐢ㄩ渶瑕佸灝戜釜銆佷粈涔堟牱鐨勫弬鏁般傚嵆璁$畻鏈轟笉鐭ラ亾鎬庝箞緇欒繖涓嚱鏁頒紶閫掑弬鏁幫紝<font color="#0000ff">浼犻掑弬鏁扮殑宸ヤ綔蹇呴』鐢卞嚱鏁拌皟鐢ㄨ呭拰鍑芥暟鏈韓鏉ュ崗璋?/font>銆備負姝わ紝璁$畻鏈烘彁渚涗簡涓縐嶈縐頒負鏍堢殑鏁版嵁緇撴瀯鏉ユ敮鎸佸弬鏁頒紶閫掋?</p><p align="left">聽聽 鍑芥暟璋冪敤鏃訛紝璋冪敤鑰呬緷嬈℃妸鍙傛暟鍘嬫爤錛岀劧鍚庤皟鐢ㄥ嚱鏁幫紝鍑芥暟琚皟鐢ㄤ互鍚庯紝鍦ㄥ爢鏍堜腑鍙栧緱鏁版嵁錛屽茍榪涜璁$畻銆傚嚱鏁拌綆楃粨鏉熶互鍚庯紝鎴栬呰皟鐢ㄨ呫佹垨鑰呭嚱鏁版湰韜慨鏀瑰爢鏍堬紝浣垮爢鏍堟仮澶嶅師瑁呫傚湪鍙傛暟浼犻掍腑錛屾湁涓や釜寰堥噸瑕佺殑闂蹇呴』寰楀埌鏄庣‘璇存槑錛?/p><p align="left"> 1) 褰撳弬鏁頒釜鏁板浜庝竴涓椂錛屾寜鐓т粈涔堥『搴忔妸鍙傛暟鍘嬪叆鍫嗘爤錛?br />2) 鍑芥暟璋冪敤鍚庯紝鐢辮皝鏉ユ妸鍫嗘爤鎭㈠鍘熻銆?br /><font color="#0000ff" size="2">3錛夊嚱鏁扮殑榪斿洖鍊兼斁鍦ㄤ粈涔堝湴鏂?/font></p>鍦ㄩ珮綰ц璦涓紝閫氳繃鍑芥暟<font color="#0000ff">璋冪敤瑙勮寖(Calling Conventions)</font>鏉ヨ鏄庤繖涓や釜闂銆傚父瑙佺殑璋冪敤瑙勮寖鏈夛細 <div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font color="#800080">stdcall</font><br /><font color="#800080">cdecl<br /></font><font color="#800080">fastcall<br /></font><font color="#800080">thiscall<br /></font><font color="#800080">naked call</font></pre></div><h2 align="left"><font size="4">stdcall璋冪敤瑙勮寖</font></h2><p align="left">stdcall 寰堝鏃跺欒縐頒負pascal璋冪敤瑙勮寖錛屽洜涓簆ascal鏄棭鏈熷緢甯歌鐨勪竴縐嶆暀瀛︾敤璁$畻鏈虹▼搴忚璁¤璦錛屽叾璇硶涓ヨ皚錛屼嬌鐢ㄧ殑鍑芥暟璋冪敤綰﹀畾鏄痵tdcall銆? 鍦∕icrosoft C++緋誨垪鐨凜/C++緙栬瘧鍣ㄤ腑錛屽父甯哥敤PASCAL瀹忔潵澹版槑榪欎釜璋冪敤綰﹀畾錛岀被浼肩殑瀹忚繕鏈塛INAPI鍜孋ALLBACK銆?</p><p align="left">stdcall璋冪敤瑙勮寖澹版槑鐨勮娉曚負錛?/p><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2"><font color="#0000ff">int</font> __stdcall function(<font color="#0000ff">int</font> a,<font color="#0000ff">int</font> b)</font><br /></pre></div><div align="left">stdcall鐨勮皟鐢ㄧ害瀹氭剰鍛崇潃錛?</div><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: medium; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2"> 1錛夊弬鏁頒粠鍙沖悜宸﹀帇鍏ュ爢鏍堬紱<br /> 2錛夊嚱鏁拌嚜韜慨鏀瑰爢鏍堬紱<br /> 3) 鍑芥暟鍚嶈嚜鍔ㄥ姞鍓嶅鐨勪笅鍒掔嚎錛屽悗闈㈢揣璺熶竴涓狜絎﹀彿錛屽叾鍚庣揣璺熺潃鍙傛暟鐨勫昂瀵搞?/font><br /></pre></div><div align="left">浠ヤ笂榪拌繖涓嚱鏁頒負渚嬶紝鍙傛暟b棣栧厛琚帇鏍堬紝鐒跺悗鏄弬鏁癮錛屽嚱鏁拌皟鐢╢unction(1,2)璋冪敤澶勭炕璇戞垚姹囩紪璇█灝嗗彉鎴愶細 </div><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2">聽 push 2 絎簩涓弬鏁板叆鏍?br /> 聽聽push 1 絎竴涓弬鏁板叆鏍?br /> 聽聽call function 璋冪敤鍙傛暟錛屾敞鎰忔鏃惰嚜鍔ㄦ妸cs:eip鍏ユ爤</font></pre></div><div align="left">鑰屽浜庡嚱鏁拌嚜韜紝鍒欏彲浠ョ炕璇戜負錛?</div><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2"> push ebp 淇濆瓨ebp瀵勫瓨鍣紝璇ュ瘎瀛樺櫒灝嗙敤鏉ヤ繚瀛樺爢鏍堢殑鏍堥《鎸囬拡錛屽彲浠ュ湪鍑芥暟閫鍑烘椂鎭㈠<br /> 聽聽mov ebp,esp 淇濆瓨鍫嗘爤鎸囬拡<br /> 聽聽mov eax,[ebp + 8H] 鍫嗘爤涓璭bp鎸囧悜浣嶇疆涔嬪墠渚濇淇濆瓨鏈塭bp,cs:eip,a,b,ebp +8鎸囧悜a<br /> 聽聽add eax,[ebp + 0CH] 鍫嗘爤涓璭bp + 12澶勪繚瀛樹簡b<br /> 聽聽mov esp,ebp 鎭㈠esp<br /> 聽聽pop ebp<br /> 聽聽ret 8</font></pre></div><p align="left">鑰屽湪緙栬瘧鏃訛紝榪欎釜鍑芥暟鐨勫悕瀛楄緲昏瘧鎴恄function@8 </p><p align="left">娉ㄦ剰涓嶅悓緙栬瘧鍣ㄤ細鎻掑叆鑷繁鐨勬眹緙栦唬鐮佷互鎻愪緵緙栬瘧鐨勯氱敤鎬э紝浣嗘槸澶т綋浠g爜濡傛銆傚叾涓湪鍑芥暟寮濮嬪淇濈暀esp鍒癳bp涓紝鍦ㄥ嚱鏁扮粨鏉熸仮澶嶆槸緙栬瘧鍣ㄥ父鐢ㄧ殑鏂規硶銆?</p><p align="left">浠庡嚱鏁拌皟鐢ㄧ湅錛?鍜?渚濇琚玴ush榪涘爢鏍堬紝鑰屽湪鍑芥暟涓張閫氳繃鐩稿浜巈bp(鍗沖垰榪涘嚱鏁版椂鐨勫爢鏍堟寚閽堬級鐨勫亸縐婚噺瀛樺彇鍙傛暟銆傚嚱鏁扮粨鏉熷悗錛宺et 8琛ㄧず娓呯悊8涓瓧鑺傜殑鍫嗘爤錛屽嚱鏁拌嚜宸辨仮澶嶄簡鍫嗘爤銆?</p><h2 align="left">聽<font size="4">cdecl璋冪敤瑙勮寖</font></h2><p align="left">cdecl璋冪敤綰﹀畾鍙堢О涓篊璋冪敤綰﹀畾錛屾槸C璇█緙虹渷鐨勮皟鐢ㄧ害瀹氾紝瀹冪殑瀹氫箟璇硶鏄細 </p><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2"><font color="#0000ff"> int</font> function (<font color="#0000ff">int</font> a ,<font color="#0000ff">int</font> b) <font color="#ff0000">// 涓嶅姞淇グ灝辨槸C璋冪敤綰﹀畾</font><br /> 聽聽<font color="#0000ff">int</font> __cdecl function(<font color="#0000ff">int</font> a,<font color="#0000ff">int</font> b) <font color="#ff0000">// 鏄庣‘鎸囧嚭C璋冪敤綰﹀畾</font></font></pre></div><p align="left">聽 cdecl璋冪敤綰﹀畾鐨勫弬鏁板帇鏍堥『搴忔槸鍜宻tdcall鏄竴鏍風殑錛屽弬鏁伴鍏堢敱鏈夊悜宸﹀帇鍏ュ爢鏍堛傛墍涓嶅悓鐨勬槸錛屽嚱鏁版湰韜笉娓呯悊鍫嗘爤錛岃皟鐢ㄨ呰礋璐f竻鐞嗗爢鏍堛傜敱浜庤繖 縐嶅彉鍖栵紝C璋冪敤綰﹀畾鍏佽鍑芥暟鐨勫弬鏁扮殑涓暟鏄笉鍥哄畾鐨勶紝榪欎篃鏄疌璇█鐨勪竴澶х壒鑹層傚浜庡墠闈㈢殑function鍑芥暟錛屼嬌鐢╟decl鍚庣殑姹囩紪鐮佸彉鎴愶細 </p><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2">璋冪敤澶?br /> 聽聽push 1<br /> 聽聽push 2<br /> 聽聽call function<br /> 聽聽add esp,8 娉ㄦ剰錛氳繖閲岃皟鐢ㄨ呭湪鎭㈠鍫嗘爤<br /> 聽聽琚皟鐢ㄥ嚱鏁癬function澶?br /> 聽聽push ebp 淇濆瓨ebp瀵勫瓨鍣紝璇ュ瘎瀛樺櫒灝嗙敤鏉ヤ繚瀛樺爢鏍堢殑鏍堥《鎸囬拡錛屽彲浠ュ湪鍑芥暟閫鍑烘椂鎭㈠<br /> 聽聽mov ebp,esp 淇濆瓨鍫嗘爤鎸囬拡<br /> 聽聽mov eax,[ebp + 8H] 鍫嗘爤涓璭bp鎸囧悜浣嶇疆涔嬪墠渚濇淇濆瓨鏈塭bp,cs:eip,a,b,ebp +8鎸囧悜a<br /> 聽聽add eax,[ebp + 0CH] 鍫嗘爤涓璭bp + 12澶勪繚瀛樹簡b<br /> 聽聽mov esp,ebp 鎭㈠esp<br /> 聽聽pop ebp<br /> 聽聽ret 娉ㄦ剰錛岃繖閲屾病鏈変慨鏀瑰爢鏍?/font></pre></div><p align="left">MSDN涓錛岃淇グ鑷姩鍦ㄥ嚱鏁板悕鍓嶅姞鍓嶅鐨勪笅鍒掔嚎錛屽洜姝ゅ嚱鏁板悕鍦ㄧ鍙瘋〃涓璁板綍涓篲function銆?<br /></p><p align="left">鐢變簬鍙傛暟鎸夌収浠庡彸鍚戝乏欏哄簭鍘嬫爤錛屽洜姝ゆ渶寮濮嬬殑鍙傛暟鍦ㄦ渶鎺ヨ繎鏍堥《鐨勪綅緗紝鍥犳褰撻噰鐢ㄤ笉瀹氫釜鏁板弬鏁版椂錛岀涓涓弬鏁板湪鏍堜腑鐨勪綅緗偗瀹氳兘鐭ラ亾錛屽彧瑕佷笉瀹氱殑鍙傛暟涓暟鑳藉鏍規嵁絎竴涓悗鑰呭悗緇殑鏄庣‘鐨勫弬鏁扮‘瀹氫笅鏉ワ紝灝卞彲浠ヤ嬌鐢ㄤ笉瀹氬弬鏁幫紝渚嬪瀵逛簬sprintf鍑芥暟錛屽畾涔変負錛?/p><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2"><font color="#0000ff">int</font> sprintf(<font color="#0000ff">char</font>* buffer,<font color="#0000ff">const</font><font color="#0000ff">char</font>* format,...)</font></pre></div><div align="left">鐢變簬鎵鏈夌殑涓嶅畾鍙傛暟閮藉彲浠ラ氳繃format紜畾錛屽洜姝や嬌鐢ㄤ笉瀹氫釜鏁扮殑鍙傛暟鏄病鏈夐棶棰樼殑銆?</div><h2 align="left">聽<font size="4">fastcall璋冪敤瑙勮寖</font></h2><div align="left">fastcall璋冪敤綰﹀畾鍜宻tdcall綾諱技錛屽畠鎰忓懗鐫錛?</div><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: medium; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2"> 1) 鍑芥暟鐨勭涓涓拰絎簩涓狣WORD鍙傛暟錛堟垨鑰呭昂瀵告洿灝忕殑錛夐氳繃ecx鍜宔dx浼犻掞紝鍏朵粬鍙傛暟閫氳繃浠庡彸鍚戝乏鐨勯『搴忓帇鏍堬紱<br /> 2) 琚皟鐢ㄥ嚱鏁版竻鐞嗗爢鏍堬紱<br /> 3) 鍑芥暟鍚嶄慨鏀硅鍒欏悓stdcall銆?/font></pre></div><div align="left">鍏跺0鏄庤娉曚負錛歩nt __fastcall function(int a,int b) </div><h2 align="left">聽<font size="4">thiscall璋冪敤瑙勮寖</font></h2><p align="left">thiscall鏄敮涓涓涓笉鑳芥槑紜寚鏄庣殑鍑芥暟淇グ錛屽洜涓簍hiscall涓嶆槸鍏抽敭瀛椼傚畠鏄疌++綾繪垚鍛樺嚱鏁扮己鐪佺殑璋冪敤綰﹀畾銆傜敱浜庢垚鍛樺嚱鏁拌皟鐢ㄨ繕鏈変竴涓猼his鎸囬拡錛屽洜姝ゅ繀欏葷壒孌婂鐞嗭紝thiscall鎰忓懗鐫錛?</p><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: medium; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2"> 1) 鍙傛暟浠庡彸鍚戝乏鍏ユ爤錛?br /> 2) 濡傛灉鍙傛暟涓暟紜畾錛宼his鎸囬拡閫氳繃ecx浼犻掔粰琚皟鐢ㄨ咃紱濡傛灉鍙傛暟涓暟涓嶇‘瀹氾紝this鎸囬拡鍦ㄦ墍鏈夊弬鏁板帇鏍堝悗琚帇鍏ュ爢鏍堬紱<br /> 3) 瀵瑰弬鏁頒釜鏁頒笉瀹氱殑錛岃皟鐢ㄨ呮竻鐞嗗爢鏍堬紝鍚﹀垯鍑芥暟鑷繁娓呯悊鍫嗘爤銆?/font></pre></div><div align="left">涓轟簡璇存槑榪欎釜璋冪敤綰﹀畾錛屽畾涔夊涓嬬被鍜屼嬌鐢ㄤ唬鐮侊細 </div><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2"><br /><font color="#0000ff">class</font> A<br /> {<br /><font color="#804040">public</font>:<br /><font color="#0000ff">int</font> function1(<font color="#0000ff">int</font> a,<font color="#0000ff">int</font> b);<br /><font color="#0000ff">int</font> function2(<font color="#0000ff">int</font> a,...);<br /> };<br /><font color="#0000ff">int</font> A::function1 (<font color="#0000ff">int</font> a,<font color="#0000ff">int</font> b)<br /> {<br /><font color="#804040">return</font> a+b;<br /> }<br /><font color="#0000ff">int</font> A::function2(<font color="#0000ff">int</font> a,...)<br /> {<br /><font color="#0000ff">va_list</font> ap;<br /> va_start(ap,a);<br /><font color="#0000ff">int</font> i;<br /><font color="#0000ff">int</font> result = <font color="#ff00ff">0</font>;<br /><font color="#804040">for</font>(i = <font color="#ff00ff">0</font> ; i < a ; i ++)<br /> {<br /> result += va_arg(ap,<font color="#0000ff">int</font>);<br /> }<br /><font color="#804040">return</font> result;<br /> }<br /><font color="#0000ff">void</font> callee()<br /> {<br /> A a;<br /> a.function1(<font color="#ff00ff">1</font>,<font color="#ff00ff">2</font>);<br /> a.function2(<font color="#ff00ff">3</font>,<font color="#ff00ff">1</font>,<font color="#ff00ff">2</font>,<font color="#ff00ff">3</font>);<br /> }</font></pre></div><div align="left">callee鍑芥暟琚炕璇戞垚姹囩紪鍚庡氨鍙樻垚錛?</div><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2">// 鍑芥暟function1璋冪敤<br /> 聽聽0401C1D push 2<br /> 聽聽00401C1F push 1<br /> 聽聽00401C21 lea ecx,[ebp-8]<br /> 聽聽00401C24 call function1 娉ㄦ剰錛岃繖閲宼his娌℃湁琚叆鏍?br /> 聽聽// 鍑芥暟function2璋冪敤<br /> 聽聽00401C29 push 3<br /> 聽聽00401C2B push 2<br /> 聽聽00401C2D push 1<br /> 聽聽00401C2F push 3<br /> 聽聽00401C31 lea eax,[ebp-8] 榪欓噷寮曞叆this鎸囬拡<br /> 聽聽00401C34 push eax<br /> 聽聽00401C35 call function2<br /> 聽聽00401C3A add esp,14h</font></pre></div><div align="left"><font size="2">鍙錛屽浜庡弬鏁頒釜鏁板浐瀹氭儏鍐典笅錛屽畠綾諱技浜巗tdcall錛屼笉瀹氭椂鍒欑被浼糲decl</font></div><h2 align="left">聽<font size="4">naked call璋冪敤瑙勮寖</font></h2><div align="left">榪欐槸涓涓緢灝戣鐨勮皟鐢ㄧ害瀹氾紝涓鑸▼搴忚璁¤呭緩璁笉瑕佷嬌鐢ㄣ傜紪璇戝櫒涓嶄細緇欒繖縐嶅嚱鏁板鍔犲垵濮嬪寲鍜屾竻鐞嗕唬鐮侊紝鏇寸壒孌婄殑鏄紝涓嶈兘鐢╮eturn榪斿洖榪斿洖鍊鹼紝鍙兘鐢ㄦ彃鍏ユ眹緙栬繑鍥炵粨鏋溿傝繖涓鑸敤浜庡疄妯″紡椹卞姩紼嬪簭璁捐錛屽亣璁懼畾涔変竴涓眰鍜岀殑鍔犳硶紼嬪簭錛屽彲浠ュ畾涔変負錛?</div><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2">聽__declspec(naked) <font color="#0000ff">int</font> add(<font color="#0000ff">int</font> a,<font color="#0000ff">int</font> b)<br /> 聽聽聽{<br /> 聽聽聽聽聽聽聽__asm mov eax,a<br /> 聽聽聽聽聽聽聽__asm add eax,b<br /> 聽聽聽聽聽聽聽__asm ret<br /> 聽聽聽}</font></pre></div><div align="left">娉ㄦ剰錛岃繖涓嚱鏁版病鏈夋樉寮忕殑return榪斿洖鍊鹼紝榪斿洖閫氳繃淇敼eax瀵勫瓨鍣ㄥ疄鐜幫紝鑰屼笖榪為鍑哄嚱鏁扮殑ret鎸囦護閮藉繀欏繪樉寮忔彃鍏ャ備笂闈唬鐮佽緲昏瘧鎴愭眹緙栦互鍚庡彉鎴愶細 </div><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;">聽聽<font size="2">聽mov eax,[ebp+8]<br /> add eax,[ebp+12]<br /> ret 8</font></pre></div><div align="left">娉ㄦ剰榪欎釜淇グ鏄拰__stdcall鍙奵decl緇撳悎浣跨敤鐨勶紝鍓嶉潰鏄畠鍜宑decl緇撳悎浣跨敤鐨勪唬鐮侊紝瀵逛簬鍜宻tdcall緇撳悎鐨勪唬鐮侊紝鍒欏彉鎴愶細 </div><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: small; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2">聽__declspec(naked) <font color="#0000ff">int</font> __stdcall function(<font color="#0000ff">int</font> a,<font color="#0000ff">int</font> b)<br /> 聽聽聽{<br /> 聽聽聽聽聽聽聽__asm mov eax,a<br /> 聽聽聽聽聽聽聽__asm add eax,b<br /> 聽聽聽聽聽聽聽__asm ret <font color="#ff00ff">8</font><font color="#ff0000">//娉ㄦ剰鍚庨潰鐨?</font><br /> 聽聽聽}</font></pre></div><div align="left">鑷充簬榪欑鍑芥暟琚皟鐢紝鍒欏拰鏅氱殑cdecl鍙妔tdcall璋冪敤鍑芥暟涓鑷淬?</div><h2 align="left">聽<font size="4">鍑芥暟璋冪敤綰﹀畾瀵艱嚧鐨勫父瑙侀棶棰?/font></h2><div align="left">濡傛灉瀹氫箟鐨勭害瀹氬拰浣跨敤鐨勭害瀹氫笉涓鑷達紝鍒欏皢瀵艱嚧鍫嗘爤琚牬鍧忥紝瀵艱嚧涓ラ噸闂錛屼笅闈㈡槸涓ょ甯歌鐨勯棶棰橈細 </div><div align="left"><pre style="padding: 8pt; background: rgb(239, 239, 239) none repeat scroll 0% 50%; font-size: medium; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 2em; margin-right: 10%; font-family: -Lucida Sans Typewriter-;"><font size="2">1) 鍑芥暟鍘熷瀷澹版槑鍜屽嚱鏁頒綋瀹氫箟涓嶄竴鑷?br /> 2) DLL瀵煎叆鍑芥暟鏃跺0鏄庝簡涓嶅悓鐨勫嚱鏁扮害瀹?/font></pre></div></div></div> </div> <br /> <br /> <img src ="http://m.shnenglu.com/erran/aggbug/34182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/erran/" target="_blank">erran</a> 2007-10-14 00:33 <a href="http://m.shnenglu.com/erran/archive/2007/10/14/34182.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>杞細C++璧勬簮涔嬩笉瀹屽叏瀵煎紩錛堝畬鏁寸増錛?/title><link>http://m.shnenglu.com/erran/archive/2007/10/14/34178.html</link><dc:creator>erran</dc:creator><author>erran</author><pubDate>Sat, 13 Oct 2007 16:14:00 GMT</pubDate><guid>http://m.shnenglu.com/erran/archive/2007/10/14/34178.html</guid><wfw:comment>http://m.shnenglu.com/erran/comments/34178.html</wfw:comment><comments>http://m.shnenglu.com/erran/archive/2007/10/14/34178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/erran/comments/commentRss/34178.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/erran/services/trackbacks/34178.html</trackback:ping><description><![CDATA[ <br /> <table class="fixedTable blogpost" border="0" cellspacing="0" width="100%"> <tbody> <tr> <td class="ellipse"> <span id="hvzpftn" class="bvTitle" id="subjcns!1p5qP-LmQlonNx_ujZCY3OgA!128"> <strong> <font size="3">C++璧勬簮涔嬩笉瀹屽叏瀵煎紩錛堝畬鏁寸増錛?/font> </strong> </span> </td> </tr> <tr> <td class="bvh8"> <strong> <font size="3"> </font> </strong> <br /> </td> </tr> <tr> <td id="msgcns!1p5qP-LmQlonNx_ujZCY3OgA!128"> <p>C++璧勬簮涔嬩笉瀹屽叏瀵煎紩錛堝畬鏁寸増錛?/p> <p>鏉ユ簮錛?a ><u><font color="#0000ff">www.csdn.net</font></u></a></p> <p>鎾版枃錛氭浘姣呫侀櫠鏂?/p> <p>澹版槑錛氭湰鏂?004騫?鏈堥鍙戜簬銆奀SDN寮鍙戦珮鎵嬨嬶紝鐗堟潈褰掕鏉傚織涓庛婄▼搴忓憳銆嬫潅蹇楃ぞ<br />鎵鏈夈?/p> <p>------------------------------------------------------------------------<br />--------</p> </td> </tr> </tbody> </table> <p>銆銆1錛屽墠璦</p> <p>銆銆鏃犳暟嬈″惉鍒扳滄垜瑕佸紑濮嬪涔燙++!鈥濈殑鍛愬枈錛屾棤鏁版鍚埌鈥淐++澶鏉備簡錛屾垜鐪熺殑<br />瀛︿笉浼氣濈殑鏃犲銆係tan Lippman鍏堢敓鏇懼湪銆奀++ Primer銆嬩竴涔︿腑鎸囧嚭鈥淐++鏄渶涓洪毦<br />瀛︾殑楂樼駭紼嬪簭璁捐璇█涔嬩竴鈥濓紝浜轟滑甯稿皢鈥滀箣涓鈥濆幓鎺変互琛ㄨ揪鑷繁瀵笴++鐨勬暚鐣忋傝瘹<br />鐒訛紝C++紼嬪簭璁捐璇█瀵逛簬瀛︿範鑰呯殑紜湁寰堝闅句互閫捐秺鐨勯縛娌燂紝浣撶郴緇撴瀯鐨勫簽澶э紝搴?br />鎺ヤ笉鏆囧茍涓嶆柇鎵╁厖鐨勭壒鎬р︹﹂櫎姝や箣澶栵紝鍙傝冭祫鏂欎箣澶氫笌鍐楁潅浣垮畠鐨勫涔犺呮湜鑰屽嵈<br />姝ワ紝嬈叉眰娣卞叆鑰呰嫤涓嶅牚璦銆傚笇鏈涜繖涓浠戒笉瀹屽叏瀵煎紩鑳藉鎴愪負鎮–++瀛︿範涔嬭礬涓婄殑寮曡礬<br />鐏?/p> <p>銆銆鎾板啓鏈枃鐨勫垵琛峰茍涓嶆墦綆楀甫棰嗗ぇ瀹朵綋楠屽彜鑰佺殑C++鍘嗗彶錛屽鏋滀綘鎯充簡瑙++鐨勫巻<br />鍙蹭笌鍏跺墠鏈熷彂灞曚腑璇稿鎶鏈殑婕斿彉錛屼綘搴斿綋鍘誨弬鑰傿jarne鐨勩奣he Design and Evo<br />lution of C++銆嬨傚綋鐒朵篃涓嶆墦綆楃粰澶у涓涓棤鎵涓嶅寘鐨勫疂鍏革紙騫墮潪涓嶆兂錛氬叾涓鏄洜<br />姘村鉤鏈夐檺錛屽叾浜屾棤濂圕++涔嬪崥澶х簿娣憋級錛屾墍緇欏嚭鐨勪粎浠呮槸涓浜涙垜浠涓哄浜庢兂瀛︿範C<br />++鐨勫箍澶ц鑰呮潵璇存渶閲嶈騫朵笖瑙︽墜鍙強鐨勫紑鍙戜笌瀛︿範璧勬簮銆?/p> <p>銆銆鏈枃浠嬬粛騫跺垎鏋愪簡涓浜涚紪璇戝櫒錛屽紑鍙戠幆澧冿紝搴擄紝灝戦噺鐨勪功綾嶄互鍙婂弬鑰冪綉绔欙紝騫?br />涓斿敖鍙兘灝濊瘯鐫緇欏嚭涓涓埄鐢ㄨ繖浜涜祫婧愮殑瀵煎紩錛屾湜瀵瑰鍚屾垜浠竴鏍風殑鍒濆鑰呰兘澶熸湁<br />鎵瑁ㄧ泭銆?/p> <p>------------------------------------------------------------------------<br />--------</p> <p>銆銆2錛岀紪璇戝櫒</p> <p>銆銆鍦–++涔嬪鐨勪換浣曡璦涓紝緙栬瘧鍣ㄩ兘浠庢潵娌℃湁鍙楀埌榪囧姝や箣閲嶈銆傚洜涓篊++鏄竴<br />闂ㄧ浉褰撳鏉傜殑璇█錛屾墍浠ョ紪璇戝櫒涔熼毦浜庢瀯寤恒傜洿鍒版渶榪戞垜浠墠寮濮嬭兘澶熶嬌鐢ㄤ笂瀹屽叏<br />絎﹀悎C++鏍囧噯鐨勭紪璇戝櫒錛堝摝錛屼綘鍙兘浼氳矗鎬偅浜涚紪璇戝櫒鍘傚晢涓嶈兘灝芥棭鐨勬彁渚涚鍚堟爣鍑?br />鐨勭紪璇戝櫒錛岃繖鍙兘鎬粬浠悇鑷淮緋葷潃鑷韓鐨勪竴濂楀埆浜轟笉鎰挎帴鍙楃殑鏍囧噯錛夈備粈涔堬紵浣?br />璇磋繖鏃犲叧绱ц錛熷摝錛屼笉錛屼綘鎵闇瑕佺殑鏄拰鏍囧噯鍖朇++楂樺害鍏煎鐨勭紪璇戠幆澧冦傞暱榪滄潵鐪?br />錛屽彧鏈夎繖鏍風殑緙栬瘧鍣ㄥC++寮鍙戜漢鍛樻潵璇存墠鏄渶鏈夋剰涔夌殑宸ュ叿錛屽挨鍏舵槸瀵逛簬紼嬪簭璁捐<br />璇█鐨勫涔犺呫備竴鑷蟲ц浠g爜鍏峰鍙Щ妞嶆э紝騫惰涓闂ㄨ璦鍙婂叾搴撶殑搴旂敤鏇翠負騫挎硾<br />銆傚棷錛屾槸鐨勶紝鎴戜滑榪欓噷鍙墦綆椾粙緇嶄竴浜涘叕璁ょ殑浼樼緙栬瘧鍣ㄣ?/p> <p>銆銆2.1 Borland C++</p> <p>銆銆榪欎釜鏄疊orland C++ Builder鍜孊orland C++ Builder X榪欎袱縐嶅紑鍙戠幆澧冪殑鍚庡彴<br />緙栬瘧鍣ㄣ傦紙鍝︼紝鎴戜箣鎵浠ュ皢涔嬪垎涓轟袱縐嶅紑鍙戠幆澧冧綘搴斿綋鑳芥槑鐧戒負浠涔堬紝姝eDelphi<br />7鍒癉elphi8鐨勮漿鍙橈紝鏄潻鍛芥х殑涓や唬銆傦級Borland C++鐢辮佺墝寮鍙戝伐鍏峰巶鍟咮orland<br />鍊懼姏鎵撻犮傝鍏徃鐨勭紪璇戝櫒绱犱互閫熷害蹇紝絀洪棿鏁堢巼楂樿憲縐幫紝Borland C++ 緋誨垪緙栬瘧<br />鍣ㄧ鎵夸簡榪欎釜浼犵粺錛屽睘浜庨潪甯鎬紭璐ㄧ殑緙栬瘧鍣ㄣ傛爣鍑嗗寲鏂歸潰鏃╁湪5.5鐗堟湰鐨勭紪璇戝櫒涓<br />鏍囧噯鍖朇++鐨勫吋瀹瑰氨杈懼埌浜?2.73%銆傜洰鍓嶆渶鏂扮増鏈槸Borland C++ Builder X涓殑6.<br />0鐗堟湰錛屽畼鏂圭О100%絎﹀悎ANSI/ISO鐨凜++鏍囧噯浠ュ強C99鏍囧噯銆傚棷鈥﹁繖姝f槸鎴戝墠闈㈡墍鎸囩殑<br />鈥滃畬鍏ㄧ鍚圕++鏍囧噯鐨勭紪璇戝櫒鈥濄?/p> <p>銆銆2.2 Visual C++</p> <p>銆銆榪欎釜姝f槸鎴戜滑鐔熺煡鐨刅isual Studio 鍜?Visual Studio.net 2002, 2003浠ュ強2<br />005 Whidbey涓甫鐨凜++緙栬瘧鍣ㄣ傜敱Microsoft鍏徃鐮斿埗銆傚湪Visual Studio 6.0涓紝<br />鍥犱負緙栬瘧鍣ㄦ湁澶鍦版柟涓嶈兘涓庡悗鏉ュ嚭鐜扮殑C++鏍囧噯鐩稿惢鍚堣岄ケ鍙楁壒璇勶紙鎯蟲兂浣犲湪浣跨敤<br />STL鐨勬椂鍊欑紪璇戞椂鎶ュ嚭鐨勯偅浜涗護浜哄帉鎭剁殑error鍜寃arning鍚э級銆俈C++6.0瀵規爣鍑嗗寲C+<br />+鐨勫吋瀹瑰彧鏈?3.43%銆備絾鏄殢鐫C++緙栬瘧鍣ㄨ璁″ぇ甯圫tanley Lippman浠ュ強璇稿C++紺?br />緹よ揪浜虹殑鍔犵洘錛屽湪Visual Studio.NET 2003涓紝Visual C++緙栬瘧鍣ㄥ凡緇忔垚涓轟竴涓潪<br />甯告垚鐔熷彲闈犵殑C++緙栬瘧鍣ㄤ簡銆侱r.Dobb's Journal鐨勮瘎嫻嬫樉紺篤isual C++7.1瀵規爣鍑咰<br />++鐨勫吋瀹規ч珮杈?8.22%錛屼竴搴︽垚涓篊BX涔嬪墠鍏煎鎬ф渶濂界殑緙栬瘧鍣ㄣ傜粨鍚堝己澶х殑Visua<br />l Studio.NET寮鍙戠幆澧冿紝鏄竴涓潪甯鎬笉閿欑殑閫夋嫨銆傝嚦浜嶹hidbey鏃朵唬鐨刅isual C++,<br />浼間箮寰蔣鎵鏈鍏蟲敞鐨勬槸C++/CLI鈥︹︽垜浠笉鎯寵瘎璁哄井杞笅涓浠g殑C++緙栬瘧鍣ㄥ鏍囧噯鍖?br />鍏煎濡備綍錛屼絾浠栫‘瀹炶秺鏉ヨ秺閫傚悎.NET (鍏跺疄浣犲拰鎴戠殑鎰熻鍙兘鏄竴鏍風殑錛屽井杞笉搴?br />褰撴妸鏍囧噯C++榪欏潡鑲ヨ倝涓㈢粰Borland,鐒惰屽井杞彲鑳藉茍涓嶈繖鏍瘋涓?銆?/p> <p>銆銆2.3 GNU C++</p> <p>銆銆钁楀悕鐨勫紑婧怌++緙栬瘧鍣ㄣ傛槸綾籙nix鎿嶄綔緋葷粺涓嬬紪鍐機++紼嬪簭鐨勯閫夈傜壒鐐規槸鏈夐潪<br />甯稿ソ鐨勭Щ妞嶆э紝浣犲彲浠ュ湪闈炲父騫挎硾鐨勫鉤鍙頒笂浣跨敤瀹冿紝鍚屾椂涔熸槸緙栧啓璺ㄥ鉤鍙幫紝宓屽叆寮?br />紼嬪簭寰堝ソ鐨勯夋嫨銆傚彟澶栧湪絎﹀悎鏍囧噯榪欎釜鏂歸潰涓鐩撮兘闈炲父濂斤紝GCC3.3澶ф鑳藉杈懼埌96<br />.15%銆備絾鏄敱浜庡叾璺ㄥ鉤鍙扮殑鐗規э紝鍦ㄤ唬鐮佸昂瀵擱熷害絳変紭鍖栦笂鐣ュ井宸竴鐐廣?/p> <p>銆銆鍩轟簬GNU C++鐨勭紪璇戝櫒鏈夊緢澶氾紝姣斿錛?/p> <p>銆銆(1) Mingw</p> <p>銆銆<a ><u><font color="#0000ff">http://www.mingw.org/</font></u></a></p> <p>銆銆GCC鐨勪竴涓猈indows鐨勭Щ妞嶇増鏈紙Dev-C++鐨勫悗鍙幫級</p> <p>銆銆(2) Cygwin</p> <p>銆銆<a ><u><font color="#0000ff">http://sources.redhat.com/cygwin/</font></u></a></p> <p>銆銆GCC鐨勫彟澶栦竴涓猈indows縐繪鐗堟湰鏄疌ygwin鐨勪竴閮ㄥ垎錛孋ygwin鏄疻indows涓嬬殑涓涓?br />Unix浠跨湡鐜銆備弗鏍肩殑璇存槸妯℃嫙GNU鐨勭幆澧冿紝榪欎篃灝辨槸"Gnu's Not Unix"瑕佽〃杈劇殑鎰?br />鎬濓紝鍣紝鎵繙浜嗭紝榪欏茍涓嶆槸鎴戜滑鍦ㄨ繖閲屽叧蹇冪殑瀹炶川鍐呭銆?/p> <p>銆銆(3) Djgpp</p> <p>銆銆<a ><u><font color="#0000ff">http://www.delorie.com/djgpp/</font></u></a></p> <p>銆銆榪欐槸GCC鐨凞OS縐繪鐗堟湰銆?/p> <p>銆銆(4) RSXNT</p> <p>銆銆<a ><u><font color="#0000ff">http://www.mathematik.uni-bielefeld.de/~rainer/</font></u></a></p> <p>銆銆榪欐槸GCC鐨凞OS鍜學indows縐繪鐗堟湰銆?/p> <p>銆銆(5) Intel C++</p> <p>銆銆钁楀悕CPU鍒墮犲巶鍟咺ntel鍑哄搧鐨勭紪璇戝櫒錛孲pecial Design for Intel x86錛佸浜?br />Intel x86緇撴瀯鐨凜PU緇忚繃鐗瑰埆鐨勪紭鍖栥傚湪鏈変簺搴旂敤鎯呭喌涓嬶紝鐗瑰埆鏄暟鍊艱綆楃瓑楂樻?br />鑳藉簲鐢紝浠呬粎閲囩敤Intel鐨勭紪璇戝櫒緙栬瘧灝辮兘澶у箙搴︾殑鎻愰珮鎬ц兘銆?/p> <p>銆銆(6) Digital Mars C++</p> <p>銆銆緗戠粶涓婃彁渚涘厤璐逛笅杞斤紝Zortech/Symantec C++鐨勭戶鎵胯咃紝鍏跺墠韜湪褰撳勾鎯ㄧ儓鐨?br />C++鍥涘浗鎴樹腑涔熸槸涓昏涔嬩竴銆?/p> <p>------------------------------------------------------------------------<br />--------</p> <p>銆銆3錛屽紑鍙戠幆澧?/p> <p>銆銆寮鍙戠幆澧冨浜庣▼搴忓憳鐨勪綔鐢ㄤ笉璦鑰屽柣銆傞夋嫨鑷繁鏈濆鐩稿鐨勭幆澧冧篃涓嶆槸瀹規槗鐨?br />浜嬫儏錛岀壒鍒槸鍦↖DE濡傛涓板瘜鐨勬儏鍐典笅銆備笅闈㈠氨鏄垜浠帹鑽愮殑涓浜涘父瑙佺殑C++寮鍙戠幆<br />澧冿紝騫舵病鏈夊寘鎷竴浜涘皬鍨嬬殑錛岀綍瑙佺殑IDE銆傚叾涓換浣曚竴嬈鵑兘鏄姛鑳戒赴瀵岋紝鍙互鐢ㄤ綔鏃?br />甯稿紑鍙戜嬌鐢ㄧ殑銆傚浜庝笉鍚屽眰闈㈢殑寮鍙戣咃紝璇峰弬瑙佸唴鏂囧叧浜庨傜敤瀵硅薄鐨勬弿榪般?/p> <p>銆銆3.1 Visual Studio 6.0</p> <p>銆銆榪欎釜铏界劧鏄疢icrosoft鍏徃鐨勮佺増鏈殑寮鍙戠幆澧冿紝浣嗘槸閴翠簬鍏跺悗緇х増鏈琕isual<br />Studio.NET鐨勫簽澶ц韓韜紝浠ュ強鍒濆鑰呭茍涓嶉偅涔堥珮鐨勫姛鑳借姹傦紝鎵浠ユ帹鑽愯繖涓紑鍙戠幆<br />澧冪粰C++鐨勫垵瀛﹁咃紝渚涘叾瀛︿範C++鐨勬渶鍩烘湰鐨勯儴鍒嗭紝姣斿C鐨勯偅閮ㄥ垎瀛愰泦錛屽綋鐒朵綘鍒寚<br />鏈涗粬鑳藉鏀寔鏈鏂扮殑C99鏍囧噯銆傚湪鏃ュ父鐨勫紑鍙戜腑錛屼粛鐒舵湁寰堝鍏徃浣跨敤榪欎釜緇忓吀紼沖畾<br />鐨勭幆澧冿紝姣斿絎旇呭氨鐪嬫浘浜茶鏈変簺鍏徃灝嗗叾緙栬瘧鍣ㄦ浛鎹負GCC鍋氭墜鏈哄紑鍙戜箣鐢ㄣ?/p> <p>銆銆3.2 Visual Studio.NET 2003</p> <p>銆銆浣滀負Microsoft鍏徃瀹樻柟姝e紡鍙戝竷鐨勬渶鏂扮増鏈紑鍙戠幆澧冿紝鍏朵腑鏈夊お澶氭縺鍔ㄤ漢蹇冪殑<br />鍔熻兘銆傜粨鍚堝叾鏈鏂扮殑C++緙栬瘧鍣ㄣ傚浜庢満鍣ㄩ厤緗瘮杈冨ソ鐨勫紑鍙戜漢鍛樻潵璇達紝浣跨敤榪欎釜寮<br />鍙戠幆澧冨皢鑳芥弧瓚沖叾澶ч儴鍒嗙殑瑕佹眰銆傝繖閲屼笉鎵撶畻鍗曠嫭璇碫isual Studio Whidbey,铏界劧<br />Visual Studio .NET 2005 - Whidbey紺懼尯棰勮鐗堝凡緇忔帹鍑猴紝浣嗘殏涓嶆槸寰堢ǔ瀹氾紝璇昏?br />鍙互浜茶韓鍘諱綋楠屻?/p> <p>銆銆3.3 Borland C++ Builder 6</p> <p>銆銆榪欎釜騫朵笉鏄疊orland鐨凜++寮鍙戠幆澧冪殑鏈鏂扮増鏈傞夋嫨瀹冪殑鍘熷洜鏄畠涓嶆槸鐢↗ava<br />鍐欑殑IDE錛岄熷害姣旇緝蹇傚畠鏈変竴涓緢瀹屽杽鐨凣UI紿椾綋璁捐鍣紝鍜孌elphi鍏辯敤涓涓猇CL銆?br />鐢變簬榪欎簺鐗圭偣錛屾瘮杈冮傚悎鍒濆鑰呬笂鎵嬨備絾鏄敱浜庡叾GUI鐨勪腑蹇冧綅緗紝鍙兘涓嶅埄浜庡浜?br />C++璇█鐨勫涔犮傝屼笖鍏朵負浜嗘敮鎸乂CL榪欎釜Object Pascal鍐欑殑搴撲篃瀵笴++榪涜浜嗕竴浜?br />縐佹湁鐨勬墿鍏呫備嬌寰椾漢浠湁涓涓笉寰椾笉鎺ュ彈鐨勪簨瀹烇細鈥淏orland C++ Builder 6鐨勯珮鎵?br />鍑犱箮閮芥槸Delphi楂樻墜鈥濄?/p> <p>銆銆3.4 Borland C++ Builder X</p> <p>銆銆姝e鍓嶆枃鎵榪幫紝铏界劧鐗堟湰鍙蜂笂鍜屽墠闈㈤偅涓狪DE闈炲父鐩歌薄錛屼絾鏄叾瀹炲畠浠槸瀹屽叏涓?br />鍚岀殑涓や釜闆嗘垚寮鍙戠幆澧冦侰++Builder鏇村鐨勬槸涓涓拰Delphi鍚屾鐨凜++鐗堟湰鐨勫紑鍙戠幆<br />澧冿紝C++BuilderX鍒欐槸瀹屽叏浠嶤++鐨勮搴︽濊冨緱鍑虹殑涓涓姛鑳戒赴瀵岀殑IDE銆傚叾鏈澶х殑鐗?br />鐐規槸璺ㄥ鉤鍙幫紝璺ㄧ紪璇戝櫒錛屽縐岶ramework鐨勯泦鎴愶紝騫朵笖鏈変竴涓猈xWindows涓哄熀紜鐨凣U<br />I璁捐鍣ㄣ傚挨鍏舵槸閲囩敤浜嗙函C++鏉ラ噸鍐欎簡鏁翠釜Framework,鎽掑純浜嗕互鍓嶄護浜烘棤濂堢殑鐗堟湰<br />銆傚浜嶤++鐨勫紑鍙戞潵璇達紝浠庣紪璇戝櫒錛屽埌搴擄紝鍒板姛鑳介泦鎴愰兘鏄潪甯哥悊鎯崇殑銆傚彲浠ラ瑙侊紝<br />Borland C++ Builder X 2.0寰堝煎緱C++鐖卞ソ鑰呮湡寰呫傚敮涓浠や漢闅懼牚涔嬪鏄綔涓轟竴涓?br />C++鐨勫紑鍙戝伐鍏鳳紝鍏禝DE鏄敤Java鍐欑殑錛屽湪閰嶇疆涓嶅鐞嗘兂鐨勬満鍣ㄤ笂璇鋒厧閲嶈冭檻鍐嶅畨瑁?br />銆?/p> <p>銆銆3.5 Emacs + GCC</p> <p>銆銆鍓嶉潰璁茬殑澶ч儴鍒嗘槸Windows鐜涓嬬殑闆嗘垚寮鍙戠幆澧冦侺inux涓婄殑寮鍙戣呮洿鍊懼悜浜?br />浣跨敤Emacs鏉ョ紪杈慍++鐨勬枃浠訛紝鐢∕akefile鏉ュ懡浠CC鍋氱紪璇戙傝櫧鐒剁湅涓婂幓姣旇緝鏉炬暎錛?br />浣嗘槸榪欎簺涓滆タ緇煎悎璧鋒潵榪樻槸涓涓紑0鍙戠幆澧冦傚鏋滀綘鑳藉濞寸啛鐨勪嬌鐢ㄨ繖鏍風殑鐜鍐欑▼<br />搴忥紝浣犵殑姘村鉤搴旇瓚沖鎸囧鎴戜滑鏉ュ啓榪欑瘒闄嬫枃浜嗐?/p> <p>銆銆3.6 Dev C++</p> <p>銆銆GCC鏄竴涓緢濂界殑緙栬瘧鍣ㄣ傚湪Windows涓婄殑C++緙栬瘧鍣ㄤ竴鐩村拰鏍囧噯鏈夌潃涓孌佃窛紱葷殑<br />鏃跺欙紝GCC灝辨槸涓涓Windows涓嬪紑鍙戣呮祦鍙f按鐨勭紪璇戝櫒銆侱ev-C++灝辨槸鑳藉璁〨CC璺?br />鍦╓indows涓嬬殑宸ュ叿錛屼綔涓洪泦鎴愬紑鍙戠幆澧冿紝榪樻彁渚涗簡鍚屼笓涓欼DE鐩稿緹庣殑璇硶楂樹寒錛?br />浠g爜鎻愮ず錛岃皟璇曠瓑鍔熻兘銆傜敱浜庝嬌鐢―elphi寮鍙戯紝鍗犵敤鍐呭瓨灝戯紝閫熷害寰堝揩錛屾瘮杈冮傚悎<br />杞婚噺綰х殑瀛︿範鍜屼嬌鐢ㄣ?/p> <p>銆銆3.7 Eclipse + CDT</p> <p>銆銆Eclipse鍙槸榪戞潵澶у悕榧庨紟鐨勫紑鍙戝伐鍏楓傛渶鏂頒竴鏈熺殑Jolt澶у灝遍緇欎簡榪欎釜鏉板嚭<br />鐨勭鐗┿傝鍏剁濂囨槸鍥犱負錛屽畠鏈韓鏄敤Java鍐欑殑錛屼絾鏄嫢鏈夋瘮涓鑸琂ava鍐欑殑紼嬪簭蹇?br />寰楀鐨勯熷害銆傝屼笖鍥犱負鍏跺熀浜庢彃浠剁粍瑁呬竴鍒囩殑鍘熷垯錛屼嬌寰楄兘澶熸湁CDT榪欐牱鐨勬彃浠舵妸E<br />clipse鍙樻垚涓涓狢/C++鐨勫紑鍙戠幆澧冦傚鏋滀綘涓鐩寸敤Eclipse鍐橨ava鐨勭▼搴忥紝涓嶅Θ鐢ㄥ畠<br />浣撻獙涓涓婥++寮鍙戠殑涔愯叮銆?/p> <p>------------------------------------------------------------------------<br />--------</p> <p>銆銆4錛屽伐鍏?/p> <p>銆銆C++鐨勮緟鍔╁伐鍏風箒澶氾紝鎴戜滑鍒嗛棬鍒被鐨勪負澶у浣滀粙緇嶏細</p> <p>銆銆4.1 鏂囨。綾?/p> <p>銆銆(1) Doxygen</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.doxygen.org</font></u></a></p> <p>銆銆Doxygen鏄竴縐嶉傚悎C椋庢牸璇█錛堝C++銆丆銆両DL銆丣ava鐢氳嚦鍖呮嫭C#鍜孭HP錛夌殑銆?br />寮鏀炬簮鐮佺殑銆佸熀浜庡懡浠よ鐨勬枃妗d駭鐢熷櫒銆?/p> <p>銆銆(2) C++2HTML</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.bedaux.net/cpp2html/</font></u></a></p> <p>銆銆鎶奀++浠g爜鍙樻垚璇硶楂樹寒鐨凥TML</p> <p>銆銆(3) CodeColorizer</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.chami.com/colorizer/</font></u></a></p> <p>銆銆瀹冭兘鎶婂ソ鍑犵璇█鐨勬簮浠g爜鐫鑹蹭負HTML</p> <p>銆銆(4) Doc-O-Matic</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.doc-o-matic.com/</font></u></a></p> <p>銆銆Doc-O_Matic涓轟綘鐨凜/C++錛孋++.net錛孌elphi/Pascal, VB.NET錛孋#鍜孞ava紼嬪簭<br />鎴栬呯粍浠朵駭鐢熷噯紜殑鏂囨。銆侱oc-O-Matic浣跨敤婧愪唬鐮佷腑鐨勭鍙峰拰娉ㄩ噴浠ュ強澶栭儴鐨勬枃妗?br />鏂囦歡鍒涘緩涓庢祦琛岀殑鏂囨。鏍峰紡涓鑷寸殑鏂囨。銆?/p> <p>銆銆(5) DocVizor</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.ucancode.net/Products/DocBuilder/Features.htm</font></u></a></p> <p>銆銆DocVizor婊¤凍浜嗛潰鍚戝璞¤蔣浠跺紑鍙戣呯殑鍩烘湰瑕佹眰鈥斺斿畠璁╂垜浠兘澶熺湅鍒癈++宸ョ▼<br />涓殑綾誨眰嬈$粨鏋勩侱ocVizor蹇熷湴浜х敓瀹屾暣鍙緵鎵撳嵃鐨勭被灞傛緇撴瀯鍥撅紝鍖呮嫭浠庣涓?br />鏂瑰簱涓潵鐨勯偅浜涚被錛岄櫎姝や箣澶朌ocVizor榪樿兘浠庣被淇℃伅涓駭鐢烪TML鏂囦歡銆?/p> <p>銆銆(6) SourcePublisher C++</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.scitools.com/sourcepublisher_c.html</font></u></a></p> <p>銆銆緇欐簮浠g爜浜х敓鎻愪緵蹇熺洿瑙傜殑HTML鎶ヨ〃錛屽寘鎷唬鐮侊紝綾誨眰嬈$粨鏋勶紝璋冪敤鍜岃璋?br />鐢ㄦ爲錛屽寘鍚拰琚寘鍚爲銆傛敮鎸佸縐嶆搷浣滅郴緇熴?/p> <p>銆銆(7) Understand</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.scitools.com/ucpp.html</font></u></a></p> <p>銆銆鍒嗘瀽浠諱綍瑙勬ā鐨凜鎴栬匔++宸ョ▼錛屽府鍔╂垜浠洿濂界殑鐞嗚В浠ュ強緙栧啓鏂囨。銆?/p> <p>銆銆4.2 浠g爜綾?/p> <p>銆銆(1) CC-Rider</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.cc-rider.com</font></u></a></p> <p>銆銆CC-Rider鏄敤浜嶤/C++紼嬪簭寮哄ぇ鐨勪唬鐮佸彲瑙嗗寲宸ュ叿錛岄氳繃浜や簰寮忔祻瑙堛佺紪杈戝強鑷?br />鍔ㄦ枃浠舵潵淇冭繘紼嬪簭鐨勭淮鎸佸拰鍙戝睍銆?/p> <p>銆銆(2) CodeInspect</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.yokasoft.com/</font></u></a></p> <p>銆銆涓縐嶆柊鐨凜/C++浠g爜鍒嗘瀽宸ュ叿銆傚畠媯鏌ユ垜浠殑婧愪唬鐮佹壘鍑洪潪鏍囧噯鐨勶紝鍙兘鐨勶紝浠?br />鍙婃櫘閫氱殑閿欒浠g爜銆?/p> <p>銆銆(3) CodeWizard</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.parasoft.com</font></u></a></p> <p>銆銆鍏堣繘鐨凜/C++婧愪唬鐮佸垎鏋愬伐鍏鳳紝浣跨敤瓚呰繃500涓紪鐮佽鑼冭嚜鍔ㄥ寲鍦版爣鏄庡嵄闄╃殑錛?br />浣嗘槸緙栬瘧鍣ㄤ笉鑳芥鏌ュ埌鐨勪唬鐮佺粨鏋勩?/p> <p>銆銆(4) C++ Validation Test Suites</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.plumhall.com/suites.html</font></u></a></p> <p>銆銆涓緇勭敤浜庢祴璇曠紪璇戝櫒鍜屽簱瀵逛簬鏍囧噯鍚誨悎紼嬪害鐨勪唬鐮佸簱銆?/p> <p>銆銆(5) CppRefactory</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://cpptool.sourceforge.net/</font></u></a></p> <p>銆銆CPPRefactory鏄竴涓嬌寰楀紑鍙戣呰兘澶熼噸鏋勪粬浠殑C++浠g爜鐨勭▼搴忋傜洰鐨勬槸浣垮緱C<br />++浠g爜鐨勯噸鏋勮兘澶熷敖鍙兘鐨勬湁鏁堢巼鍜岀畝鍗曘?/p> <p>銆銆(6) Lzz</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.lazycplusplus.com/</font></u></a></p> <p>銆銆Lzz鏄竴涓嚜鍔ㄥ寲璁稿C++緙栫▼涓殑浣撳姏媧葷殑宸ュ叿銆傚畠鑳藉鑺傜渷鎴戜滑璁稿浜嬩歡騫?br />涓斾嬌寰楃紪鐮佹洿鍔犳湁涔愯叮銆傜粰鍑轟竴緋誨垪鐨勫0鏄庯紝Lzz浼氱粰鎴戜滑鍒涘緩澶存枃浠跺拰婧愭枃浠躲?/p> <p>銆銆(7) QA C++ Generation 2000</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.programmingresearch.com/solutions/qacpp.htm</font></u></a></p> <p>銆銆瀹冨叧娉ㄩ潰鍚戝璞$殑C++婧愪唬鐮侊紝瀵規湁鍏充簬璁捐錛屾晥鐜囷紝鍙潬鎬э紝鍙淮鎶ゆх殑閮ㄥ垎<br />鎻愬嚭璀﹀憡淇℃伅銆?/p> <p>銆銆(8) s-mail project - Java to C++DOL</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://sadlocha.strefa.pl/s-mail/ja2dol.html</font></u></a></p> <p>銆銆鎶奐ava婧愪唬鐮佺炕璇戜負鐩稿簲鐨凜++婧愪唬鐮佺殑鍛戒護琛屽伐鍏楓?/p> <p>銆銆(9) SNIP from Cleanscape Software International</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.cleanscape.net/stdprod/snip/index.html</font></u></a></p> <p>銆銆涓涓~騫崇紪鐮佸拰璁捐涔嬮棿娌熷鐨勬槗浜庝嬌鐢ㄧ殑C++寮鍙戝伐鍏鳳紝鑺傜渷澶ч噺緙栬緫鍜岃皟璇?br />鐨勪簨浠訛紝瀹冭繕浣垮緱寮鍙戣呰兘澶熸寚瀹氳璁℃ā寮忎綔涓哄璞℃ā鍨嬶紝鑷姩浠庡璞℃ā鍨嬩腑浜х敓<br />C++鐨勭被銆?/p> <p>銆銆(10) SourceStyler C++</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.ochresoftware.com/</font></u></a></p> <p>銆銆瀵笴/C++婧愪唬鐮佹彁渚涘畬鏁寸殑鏍煎紡鍖栧拰鎺掔増鎺у埗鐨勫伐鍏楓傛彁渚涘浜?5涓殑鏍煎紡鍖栭?br />欏逛互鍙婂畬鍏ㄦ敮鎸丄NSI C++銆?/p> <p>銆銆4.3 緙栬瘧綾?/p> <p>銆銆(1) Compilercache</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.erikyyy.de/compilercache/</font></u></a></p> <p>銆銆Compilercache鏄竴涓浣犵殑C鍜孋++緙栬瘧鍣ㄧ殑灝佽鑴氭湰銆傛瘡嬈℃垜浠繘琛岀紪璇戯紝灝?br />瑁呰剼鏈紝鎶婄紪璇戠殑緇撴灉鏀懼叆緙撳瓨錛屼竴鏃︾紪璇戠浉鍚岀殑涓滆タ錛岀粨鏋滃皢浠庣紦瀛樹腑鍙栧嚭鑰屼笉<br />鏄啀嬈$紪璇戙?/p> <p>銆銆(2) Ccache</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://ccache.samba.org/</font></u></a></p> <p>銆銆Ccache鏄竴涓紪璇戝櫒緙撳瓨銆傚畠浣跨敤璧鋒潵灝卞儚C/C++緙栬瘧鍣ㄧ殑緙撳瓨棰勫鐞嗗櫒錛岀紪璇?br />閫熷害閫氬父鑳芥彁楂樻櫘閫氱紪璇戣繃紼嬬殑5~10鍊嶃?/p> <p>銆銆(3) Cmm (C++ with MultiMethods)</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.op59.net/cmm/cmm-0.28/users.html</font></u></a></p> <p>銆銆榪欐槸涓縐岰++璇█鐨勬墿灞曘傝鍏mm婧愪唬鐮佽緭鍑篊++鐨勬簮浠g爜錛屽姛鑳芥槸瀵笴++璇█<br />娣誨姞浜嗗multimethod鐨勬敮鎸併?/p> <p>銆銆(4) The Frost Project</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://frost.flewid.de/</font></u></a></p> <p>銆銆Forst浣垮緱浣犺兘澶熷湪C++紼嬪簭涓儚鍘熺敓鐨凜++鐗規т竴鏍蜂嬌鐢╩ultimethod浠ュ強铏氬嚱<br />鏁板弬鏁般傚畠鏄竴涓紪璇戝櫒鐨勫澹熾?/p> <p>銆銆4.4 嫻嬭瘯鍜岃皟璇曠被</p> <p>銆銆(1) CPPUnit</p> <p>銆銆CppUnit 鏄釜鍩轟簬 LGPL 鐨勫紑婧愰」鐩紝鏈鍒濈増鏈Щ妞嶈嚜 JUnit錛屾槸涓涓潪甯鎬紭<br />縐鐨勫紑婧愭祴璇曟鏋躲侰ppUnit 鍜?JUnit 涓鏍蜂富瑕佹濇兂鏉ユ簮浜庢瀬闄愮紪紼嬨備富瑕佸姛鑳藉氨<br />鏄鍗曞厓嫻嬭瘯榪涜綆$悊錛屽茍鍙繘琛岃嚜鍔ㄥ寲嫻嬭瘯銆?/p> <p>銆銆(2) C++Test</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.parasoft.com/</font></u></a></p> <p>銆銆C++ Test鏄竴涓崟鍏冩祴璇曞伐鍏鳳紝瀹冭嚜鍔ㄥ寲浜咰鍜孋++綾伙紝鍑芥暟鎴栬呯粍浠剁殑嫻嬭瘯銆?/p> <p> <br />銆銆(3) Cantata++</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.iplbath.com/products/tools/pt400.shtml</font></u></a></p> <p>銆銆璁捐鐨勭洰鐨勬槸涓轟簡婊¤凍鍦ㄥ悎鐞嗙殑緇忔祹寮閿涓嬩嬌鐢ㄨ繖涓伐鍏峰彲浠ヨ寮鍙戝伐紼嬪笀寮<br />灞曞崟鍏冩祴璇曞拰闆嗘垚嫻嬭瘯鐨勯渶姹?</p> <p>銆銆(4) Purify</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www-900.ibm.com/cn/software/rational/products/purif</font></u></a><br />yplus/index.shtml</p> <p>銆銆IBM Rational PurifyPlus鏄竴濂楀畬鏁寸殑榪愯鏃跺垎鏋愬伐鍏鳳紝鏃ㄥ湪鎻愰珮搴旂敤紼嬪簭鐨?br />鍙潬鎬у拰鎬ц兘銆侾urifyPlus灝嗗唴瀛橀敊璇拰娉勬紡媯嫻嬨佸簲鐢ㄧ▼搴忔ц兘鎻忚堪銆佷唬鐮佽鐩?br />鍒嗘瀽絳夊姛鑳界粍鍚堝湪涓涓崟涓銆佸畬鏁寸殑宸ュ叿鍖呬腑銆?/p> <p>銆銆(5) BoundsChecker</p> <p>銆銆BoundsChecker鏄竴涓狢++榪愯鏃墮敊璇嫻嬪拰璋冭瘯宸ュ叿銆傚畠閫氳繃鍦╒isual Studi<br />o鍐呰嚜鍔ㄥ寲璋冭瘯榪囩▼鍔犻熷紑鍙戝茍涓旂緝鐭笂甯傜殑鍛ㄦ湡銆侭oundsChecker鎻愪緵娓呮錛岃緇?br />鐨勭▼搴忛敊璇垎鏋愶紝璁稿鏄C++鐙湁鐨勫茍涓斿湪static錛宻tack鍜宧eap鍐呭瓨涓嫻嬪拰璇?br />鏂敊璇紝浠ュ強鍙戠幇鍐呭瓨鍜岃祫婧愮殑娉勬紡銆傘銆(6) Insure++</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.parasoft.com/</font></u></a></p> <p>銆銆涓涓嚜鍔ㄥ寲鐨勮繍琛屾椂紼嬪簭嫻嬭瘯宸ュ叿錛屾鏌ラ毦浠ュ療瑙夌殑閿欒,濡傚唴瀛樿鐩栵紝鍐呭瓨娉?br />婕忥紝鍐呭瓨鍒嗛厤閿欒錛屽彉閲忓垵濮嬪寲閿欒錛屽彉閲忓畾涔夊啿紿侊紝鎸囬拡閿欒錛屽簱閿欒錛岄昏緫閿?br />璇拰綆楁硶閿欒絳夈?/p> <p>銆銆(7) GlowCode</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.glowcode.com/</font></u></a></p> <p>銆銆GlowCode鍖呮嫭鍐呭瓨娉勬紡媯鏌ワ紝code profiler錛屽嚱鏁拌皟鐢ㄨ窡韙瓑鍔熻兘銆傜粰C++寮<br />鍙戣呮彁渚涘畬鏁寸殑閿欒璇婃柇錛屽拰榪愯鏃舵ц兘鍒嗘瀽宸ュ叿鍖呫?/p> <p>銆銆(8) Stack Spy</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.imperioustech.com/</font></u></a></p> <p>銆銆瀹冭兘鎹曟崏stack corruption, stack over run, stack overflow絳夋湁鍏蟲爤鐨勯敊<br />璇?/p> <p>------------------------------------------------------------------------<br />--------</p> <p>銆銆5錛屽簱</p> <p>銆銆鍦–++涓紝搴撶殑鍦頒綅鏄潪甯擱珮鐨勩侰++涔嬬埗 Bjarne Stroustrup鍏堢敓澶氭琛ㄧず浜?br />璁捐搴撴潵鎵╁厖鍔熻兘瑕佸ソ榪囪璁℃洿澶氱殑璇硶鐨勮█璁恒傜幇瀹炰腑錛孋++鐨勫簱闂ㄧ被綣佸錛岃В鍐?br />鐨勯棶棰樹篃鏄瀬鍏跺箍娉涳紝搴撲粠杞婚噺綰у埌閲嶉噺綰х殑閮芥湁銆備笉灝戦兘鏄浜虹溂鐣屽ぇ寮錛屼害鎴?br />鏄湜鑰岀敓鍙圭殑鎬濈淮鏉頒綔銆傜敱浜庡簱鐨勬暟閲忛潪甯稿簽澶э紝鑰屼笖闄愪簬絎旇呮按騫籌紝鍏朵腑寰堝騫?br />涓嶄簡瑙c傛墍浠ユ枃涓墍鎻愮殑涓浜涘簱閮芥槸姣旇緝钁楀悕鐨勫ぇ鍨嬪簱銆?/p> <p>銆銆5.1 鏍囧噯搴?/p> <p>銆銆鏍囧噯搴撲腑鎻愪緵浜咰++紼嬪簭鐨勫熀鏈鏂姐傝櫧鐒禖++鏍囧噯搴撻殢鐫C++鏍囧噯鎶樿吘浜嗚澶氬勾<br />錛岀洿鍒版爣鍑嗙殑鍑哄彴鎵嶆寮忓畾鍨嬶紝浣嗘槸鍦ㄦ爣鍑嗗簱鐨勫疄鐜頒笂鍗村緢浠や漢嬈f叞寰楃湅鍒板縐嶅疄<br />鐜幫紝騫朵笖宸茶瀹炶返璇佹槑涓烘湁宸ヤ笟綰у埆寮哄害鐨勪匠浣溿?/p> <p>銆銆(1) Dinkumware C++ Library</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.dinkumware.com/</font></u></a></p> <p>銆銆P.J. Plauger緙栧啓鐨勯珮鍝佽川鐨勬爣鍑嗗簱銆侾.J. Plauger鍗氬+鏄疍r. Dobb's紼嬪簭璁?br />璁℃澃鍑哄鐨勮幏寰楄呫傚叾緙栧啓鐨勫簱闀挎湡琚玀icrosoft閲囩敤錛屽茍涓旀渶榪態orland涔熷彇寰椾簡<br />鍏禣EM鐨刲icense錛屽湪鍏禖/C++鐨勪駭鍝佷腑閲囩敤Dinkumware鐨勫簱銆?/p> <p>銆銆(2) RogueWave Standard C++ Library</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.roguewave.com/</font></u></a></p> <p>銆銆榪欎釜搴撳湪Borland C++ Builder鐨勬棭鏈熺増鏈腑鏇劇粡琚噰鐢紝鍚庢潵琚叾浠栫殑搴撶粰鏇?br />鎹簡銆傜瑪鑰呬笉鎺ㄨ崘浣跨敤銆?/p> <p>銆銆(3) SGI STL</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.roguewave.com/</font></u></a></p> <p>銆銆SGI鍏徃鐨凜++鏍囧噯妯$増搴撱?/p> <p>銆銆(4) STLport</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.stlport.org/</font></u></a></p> <p>銆銆SGI STL搴撶殑璺ㄥ鉤鍙板彲縐繪鐗堟湰銆?/p> <p>銆銆5.2 鈥滃噯鈥濇爣鍑嗗簱 - Boost</p> <p>銆銆鍙傝冪珯鐐癸細<a ><u><font color="#0000ff">http://www.boost.org</font></u></a></p> <p>銆銆鍥藉唴闀滃儚錛?a ><u><font color="#0000ff">http://www.c-view.org/tech/lib/boost/index.htm</font></u></a></p> <p>銆銆Boost搴撴槸涓涓粡榪囧崈閿ょ櫨鐐箋佸彲縐繪銆佹彁渚涙簮浠g爜鐨凜++搴擄紝浣滀負鏍囧噯搴撶殑鍚?br />澶囷紝鏄疌++鏍囧噯鍖栬繘紼嬬殑鍙戝姩鏈轟箣涓銆?Boost搴撶敱C++鏍囧噯濮斿憳浼氬簱宸ヤ綔緇勬垚鍛樺彂璧?br />錛屽湪C++紺懼尯涓獎鍝嶇敋澶э紝鍏舵垚鍛樺凡榪?000浜恒?Boost搴撲負鎴戜滑甯︽潵浜嗘渶鏂般佹渶閰楓?br />鏈瀹炵敤鐨勬妧鏈紝鏄笉鎶樹笉鎵g殑鈥滃噯鈥濇爣鍑嗗簱銆?/p> <p>銆銆Boost涓瘮杈冩湁鍚嶆皵鐨勬湁榪欎箞鍑犱釜搴擄細</p> <p>銆銆Regex</p> <p>銆銆姝e垯琛ㄨ揪寮忓簱</p> <p>銆銆Spirit</p> <p>銆銆LL parser framework錛岀敤C++浠g爜鐩存帴琛ㄨ揪EBNF</p> <p>銆銆Graph</p> <p>銆銆鍥劇粍浠跺拰綆楁硶</p> <p>銆銆Lambda</p> <p>銆銆鍦ㄨ皟鐢ㄧ殑鍦版柟瀹氫箟鐭皬鍖垮悕鐨勫嚱鏁板璞★紝寰堝疄鐢ㄧ殑functional鍔熻兘</p> <p>銆銆concept check</p> <p>銆銆媯鏌ユ硾鍨嬬紪紼嬩腑鐨刢oncept</p> <p>聽</p> <p>銆銆Mpl</p> <p>銆銆鐢ㄦā鏉垮疄鐜扮殑鍏冪紪紼嬫鏋?/p> <p>聽</p> <p>銆銆Thread</p> <p>銆銆鍙Щ妞嶇殑C++澶氱嚎紼嬪簱</p> <p>聽</p> <p>銆銆Python</p> <p>銆銆鎶奀++綾誨拰鍑芥暟鏄犲皠鍒癙ython涔嬩腑</p> <p>銆銆Pool</p> <p>銆銆鍐呭瓨姹犵鐞?/p> <p>聽</p> <p>銆銆smart_ptr</p> <p>銆銆5涓櫤鑳芥寚閽堬紝瀛︿範鏅鴻兘鎸囬拡蹇呰錛屼竴浠戒笉閿欑殑鍙傝冩槸鏉ヨ嚜CUJ鐨勬枃绔狅細</p> <p>銆銆Smart Pointers in Boost錛屽摝錛岃繖綃囨枃绔犲彲浠ユ煡鍒幫紝CUJ鏄彁渚涘湪綰挎祻瑙堢殑銆?br />涓枃鐗堣絎旇呭湪銆奃r. Dobb's Journal杞歡鐮斿彂鏉傚織銆嬬7杈戜笂鐨勮瘧鏂囥?/p> <p>銆銆Boost鎬諱綋鏉ヨ鏄疄鐢ㄤ環鍊煎緢楂橈紝璐ㄩ噺寰堥珮鐨勫簱銆傚茍涓旂敱浜庡叾瀵硅法騫沖彴鐨勫己璋冿紝<br />瀵規爣鍑咰++鐨勫己璋冿紝鏄紪鍐欏鉤鍙版棤鍏籌紝鐜頒唬C++鐨勫紑鍙戣呭繀澶囩殑宸ュ叿銆備絾鏄疊oost涓篃<br />鏈夊緢澶氭槸瀹為獙鎬ц川鐨勪笢瑗匡紝鍦ㄥ疄闄呯殑寮鍙戜腑瀹炵敤闇瑕佽皚鎱庛傚茍涓斿緢澶欱oost涓殑搴撳姛<br />鑳藉牚縐板璇█鍔熻兘鐨勬墿灞曪紝鍏舵瀯閫犵敤灝界簿宸х殑鎵嬫硶錛屼笉瑕佽錘鐒剁殑鑺辮垂鏃墮棿鐮旇銆侭o<br />ost鍙﹀涓闈紝姣斿Graph榪欐牱鐨勫簱鍒欐槸鍏鋒湁宸ヤ笟寮哄害錛岀粨鏋勮壇濂斤紝闈炲父鍊煎緱鐮旇鐨?br />綺懼搧浠g爜錛屽茍涓斾篃鍙互鏀懼績鐨勫湪浜у搧浠g爜涓澶氬埄鐢ㄣ?/p> <p>銆銆5.3 GUI</p> <p>銆銆鍦ㄤ紬澶欳++鐨勫簱涓紝GUI閮ㄥ垎鐨勫簱綆楁槸姣旇緝綣佽崳錛屼篃姣旇緝寮曚漢娉ㄧ洰鐨勩傚湪瀹為檯寮<br />鍙戜腑錛孏UI搴撶殑閫夋嫨涔熸槸闈炲父閲嶈鐨勪竴浠朵簨鎯咃紝涓嬮潰鎴戜滑緇艱堪涓涓嬪彲閫夋嫨鐨凣UI搴擄紝<br />鍚勮嚜鐨勭壒鐐逛互鍙婄浉鍏沖伐鍏風殑鏀寔銆?/p> <p>銆銆(1) MFC</p> <p>銆銆澶у悕榧庨紟鐨勫井杞熀紜綾誨簱錛圡icrosoft Foundation Class錛夈傚ぇ鍑″榪嘨C++鐨?br />浜洪兘搴旇鐭ラ亾榪欎釜搴撱傝櫧鐒朵粠鎶鏈搴﹁錛孧FC鏄笉澶ф紓浜殑錛屼絾鏄畠鏋勫緩浜嶹indo<br />ws API 涔嬩笂錛岃兘澶熶嬌紼嬪簭鍛樼殑宸ヤ綔鏇村鏄?緙栫▼鏁堢巼楂橈紝鍑忓皯浜嗗ぇ閲忓湪寤虹珛 Windo<br />ws 紼嬪簭鏃跺繀欏葷紪鍐欑殑浠g爜錛屽悓鏃跺畠榪樻彁渚涗簡鎵鏈変竴鑸?C++ 緙栫▼鐨勪紭鐐癸紝渚嬪緇ф壙<br />鍜屽皝瑁呫侻FC 緙栧啓鐨勭▼搴忓湪鍚勪釜鐗堟湰鐨刉indows鎿嶄綔緋葷粺涓婃槸鍙Щ妞嶇殑錛屼緥濡傦紝鍦?br />Windows 3.1涓嬬紪鍐欑殑浠g爜鍙互寰堝鏄撳湴縐繪鍒?Windows NT 鎴?Windows 95 涓娿備絾<br />鏄湪鏈榪戝彂灞曚互鍙婂畼鏂規敮鎸佷笂鏃ユ笎鍔垮井銆?/p> <p>銆銆(2) QT</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.trolltech.com/</font></u></a></p> <p>銆銆Qt鏄疶rolltech鍏徃鐨勪竴涓騫沖彴鐨凜++鍥懼艦鐢ㄦ埛鐣岄潰搴旂敤紼嬪簭妗嗘灦銆傚畠鎻愪緵緇?br />搴旂敤紼嬪簭寮鍙戣呭緩绔嬭壓鏈駭鐨勫浘褰㈢敤鎴風晫闈㈡墍闇鐨勬墍鐢ㄥ姛鑳姐俀t鏄畬鍏ㄩ潰鍚戝璞$殑<br />寰堝鏄撴墿灞曪紝騫朵笖鍏佽鐪熸鍦扮粍浠剁紪紼嬨傝嚜浠?996騫存棭浜涙椂鍊欙紝Qt榪涘叆鍟嗕笟棰嗗煙錛?br />瀹冨凡緇忔垚涓哄叏涓栫晫鑼冨洿鍐呮暟鍗冪鎴愬姛鐨勫簲鐢ㄧ▼搴忕殑鍩虹銆俀t涔熸槸嫻佽鐨凩inux妗岄潰鐜?br />澧僈DE 鐨勫熀紜錛屽悓鏃跺畠榪樻敮鎸乄indows銆丮acintosh銆乁nix/X11絳夊縐嶅鉤鍙般?/p> <p>銆銆(3) WxWindows</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.wxwindows.org/</font></u></a></p> <p>銆銆璺ㄥ鉤鍙扮殑GUI搴撱傚洜涓哄叾綾誨眰嬈℃瀬鍍廙FC錛屾墍浠ユ湁鏂囩珷浠嬬粛浠嶮FC鍒癢xWindows鐨?br />浠g爜縐繪浠ュ疄鐜拌法騫沖彴鐨勫姛鑳姐傞氳繃澶氬勾鐨勫紑鍙戜篃鏄竴涓棩瓚嬪畬鍠勭殑GUI搴擄紝鏀寔鍚?br />鏍蜂笉寮變簬鍓嶉潰涓や釜搴撱傚茍涓旀槸瀹屽叏寮鏀炬簮浠g爜鐨勩傛柊榪戠殑C++ Builder X鐨凣UI璁捐<br />鍣ㄥ氨鏄熀浜庤繖涓簱鐨勩?/p> <p>銆銆(4) Fox</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.fox-toolkit.org/</font></u></a></p> <p>銆銆寮鏀炬簮浠g爜鐨凣UI搴撱備綔鑰呬粠鑷繁浜茶韓鐨勫紑鍙戠粡楠屼腑寰楀嚭浜嗕竴涓悊鎯崇殑GUI搴撳簲<br />璇ユ槸浠涔堟牱瀛愮殑鎰熷彈鍑哄彂錛屼粠鑰屽紑濮嬩簡瀵硅繖涓簱鐨勫紑鍙戙傛湁鍏磋叮鐨勫彲浠ュ皾璇曚竴涓嬨?/p> <p> <br />銆銆(5) WTL</p> <p>銆銆鍩轟簬ATL鐨勪竴涓簱銆傚洜涓轟嬌鐢ㄤ簡澶ч噺ATL鐨勮交閲忕駭鎵嬫硶錛屾ā鏉跨瓑鎶鏈紝鍦ㄤ唬鐮佸昂<br />瀵革紝浠ュ強閫熷害浼樺寲鏂歸潰鍋氬緱闈炲父鍒頒綅銆備富瑕侀潰鍚戠殑浣跨敤緹や綋鏄紑鍙慍OM杞婚噺綰т緵緗戠粶<br />涓嬭澆鐨勫彲瑙嗗寲鎺т歡鐨勫紑鍙戣呫?/p> <p>銆銆(6) GTK</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://gtkmm.sourceforge.net/</font></u></a></p> <p>銆銆GTK鏄竴涓ぇ鍚嶉紟榧庣殑C鐨勫紑婧怗UI搴撱傚湪Linux涓栫晫涓湁Gnome榪欐牱鐨勬潃鎵嬪簲鐢ㄣ?br />鑰孏TK灝辨槸榪欎釜搴撶殑C++灝佽鐗堟湰銆?/p> <p>銆銆5.4 緗戠粶閫氫俊</p> <p>銆銆(1) ACE</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.cs.wustl.edu/~schmidt/ACE.html</font></u></a></p> <p>銆銆C++搴撶殑浠h〃錛岃秴閲嶉噺綰х殑緗戠粶閫氫俊寮鍙戞鏋躲侫CE鑷傞厤閫氫俊鐜錛圓daptive<br />聽Communication Environment錛夋槸鍙互鑷敱浣跨敤銆佸紑鏀炬簮浠g爜鐨勯潰鍚戝璞℃鏋訛紝鍦?br />鍏朵腑瀹炵幇浜嗚澶氱敤浜庡茍鍙戦氫俊杞歡鐨勬牳蹇冩ā寮忋侫CE鎻愪緵浜嗕竴緇勪赴瀵岀殑鍙鐢–++鍖?br />瑁呭瑙傦紙Wrapper Facade錛夊拰妗嗘灦緇勪歡錛屽彲璺ㄨ秺澶氱騫沖彴瀹屾垚閫氱敤鐨勯氫俊杞歡浠誨姟<br />錛屽叾涓寘鎷細浜嬩歡澶氳礬鍒嗙鍜屼簨浠跺鐞嗗櫒鍒嗘淳銆佷俊鍙峰鐞嗐佹湇鍔″垵濮嬪寲銆佽繘紼嬮棿閫?br />淇°佸叡浜唴瀛樼鐞嗐佹秷鎭礬鐢便佸垎甯冨紡鏈嶅姟鍔ㄦ侊紙閲嶏級閰嶇疆銆佸茍鍙戞墽琛屽拰鍚屾錛岀瓑<br />絳夈?/p> <p>銆銆(2) StreamModule</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.omnifarious.org/StrMod/</font></u></a></p> <p>銆銆璁捐鐢ㄤ簬綆鍖栫紪鍐欏垎甯冨紡紼嬪簭鐨勫簱銆傚皾璇曠潃浣垮緱緙栧啓澶勭悊寮傛琛屼負鐨勭▼搴忔洿瀹?br />鏄擄紝鑰屼笉鏄敤鍚屾鐨勫澹沖寘璧峰紓姝ョ殑鏈川銆?/p> <p>銆銆(3) SimpleSocket</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://home.hetnet.nl/~lcbokkers/simsock.htm</font></u></a></p> <p>銆銆榪欎釜綾誨簱璁╃紪鍐欏熀浜巗ocket鐨勫鎴?鏈嶅姟鍣ㄧ▼搴忔洿鍔犲鏄撱?/p> <p>銆銆(4) A Stream Socket API for C++</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.h</font></u></a><br />tml</p> <p>銆銆鍙堜竴涓Socket鐨勫皝瑁呭簱銆?/p> <p>銆銆5.5 XML</p> <p>銆銆(1) Xerces</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://xml.apache.org/xerces-c/</font></u></a></p> <p>銆銆Xerces-C++ 鏄竴涓潪甯稿仴澹殑XML瑙f瀽鍣紝瀹冩彁渚涗簡楠岃瘉錛屼互鍙奡AX鍜孌OM API<br />銆俋ML楠岃瘉鍦ㄦ枃妗g被鍨嬪畾涔?Document Type Definition錛孌TD)鏂歸潰鏈夊緢濂界殑鏀寔錛?br />騫朵笖鍦?001騫?2鏈堝鍔犱簡鏀寔W3C XML Schema 鐨勫熀鏈畬鏁寸殑寮鏀炬爣鍑嗐?/p> <p>銆銆(2) XMLBooster</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.xmlbooster.com/</font></u></a></p> <p>銆銆榪欎釜搴撻氳繃浜х敓鐗瑰埗鐨刾arser鐨勫姙娉曟瀬澶х殑鎻愰珮浜哫ML瑙f瀽鐨勯熷害錛屽茍涓旇兘澶熶駭<br />鐢熺浉搴旂殑GUI紼嬪簭鏉ヤ慨鏀硅繖涓猵arser銆傚湪DOM鍜孲AX涓ゅぇ涓繪祦XML瑙f瀽鍔炴硶涔嬪鎻愪緵浜?br />鍙﹀涓涓彲琛岀殑瑙e喅鏂規銆?/p> <p>銆銆(3) Pull Parser</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.extreme.indiana.edu/xgws/xsoap/xpp/</font></u></a></p> <p>銆銆榪欎釜搴撻噰鐢╬ull鏂規硶鐨刾arser銆傚湪姣忎釜SAX鐨刾arser搴曞眰閮芥湁涓涓猵ull鐨刾arse<br />r錛岃繖涓獂pp鎶婅繖灞傛毚闇插嚭鏉ョ洿鎺ョ粰澶у浣跨敤銆傚湪瑕佸厖鍒嗚冭檻閫熷害鐨勬椂鍊欏煎緱灝濊瘯銆?/p> <p> <br />銆銆(4) Xalan</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://xml.apache.org/xalan-c/</font></u></a></p> <p>銆銆Xalan鏄竴涓敤浜庢妸XML鏂囨。杞崲涓篐TML錛岀函鏂囨湰鎴栬呭叾浠朮ML綾誨瀷鏂囨。鐨刋SLT澶?br />鐞嗗櫒銆?/p> <p>銆銆(5) CMarkup</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.firstobject.com/xml.htm</font></u></a></p> <p>銆銆榪欐槸涓縐嶄嬌鐢‥DOM鐨刋ML瑙f瀽鍣ㄣ傚湪寰堝鎬濊礬涓婇潰闈炲父鐏墊椿瀹炵敤銆傚煎緱澶у鍦―<br />OM鍜孲AX涔嬪瀵繪眰涓鐐圭伒鎰熴?/p> <p>銆銆(6) libxml++</p> <p>銆銆<a ><u><font color="#0000ff">http://libxmlplusplus.sourceforge.net/</font></u></a></p> <p>銆銆libxml++鏄钁楀悕鐨刲ibxml XML瑙f瀽鍣ㄧ殑C++灝佽鐗堟湰</p> <p>銆銆5.6 縐戝璁$畻</p> <p>銆銆(1) Blitz++</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.oonumerics.org/blitz/</font></u></a></p> <p>銆銆Blitz++ 鏄竴涓珮鏁堢巼鐨勬暟鍊艱綆楀嚱鏁板簱錛屽畠鐨勮璁$洰鐨勬槸甯屾湜寤虹珛涓濂楁棦鍏?br />鍍廋++ 涓鏍鋒柟渚匡紝鍚屾椂鍙堟瘮Fortran閫熷害鏇村揩鐨勬暟鍊艱綆楃幆澧冦傞氬父錛岀敤C++鎵鍐欏嚭<br />鐨勬暟鍊肩▼搴忥紝姣?Fortran鎱?0%宸﹀彸錛屽洜姝litz++姝f槸瑕佹敼鎺夎繖涓己鐐廣傛柟娉曟槸鍒?br />鐢–++鐨則emplate鎶鏈紝紼嬪簭鎵ц鐢氳嚦鍙互姣擣ortran鏇村揩銆侭litz++鐩墠浠嶅湪鍙戝睍涓?br />錛屽浜庡父瑙佺殑SVD錛孎FTs錛孮MRES絳夊父瑙佺殑綰挎т唬鏁版柟娉曞茍涓嶆彁渚涳紝涓嶈繃浣跨敤鑰呭彲浠?br />寰堝鏄撳湴鍒╃敤Blitz++鎵鎻愪緵鐨勫嚱鏁版潵鏋勫緩銆?/p> <p>銆銆(2) POOMA</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.codesourcery.com/pooma/pooma</font></u></a></p> <p>銆銆POOMA鏄竴涓厤璐圭殑楂樻ц兘鐨凜++搴擄紝鐢ㄤ簬澶勭悊騫惰寮忕瀛﹁綆椼侾OOMA鐨勯潰鍚戝<br />璞¤璁℃柟渚夸簡蹇熺殑紼嬪簭寮鍙戯紝瀵瑰茍琛屾満鍣ㄨ繘琛屼簡浼樺寲浠ヨ揪鍒版渶楂樼殑鏁堢巼錛屾柟渚垮湪<br />宸ヤ笟鍜岀爺絀剁幆澧冧腑浣跨敤銆?/p> <p>銆銆(3) MTL</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.osl.iu.edu/research/mtl/</font></u></a></p> <p>銆銆Matrix Template Library(MTL)鏄竴涓珮鎬ц兘鐨勬硾鍨嬬粍浠跺簱錛屾彁渚涗簡鍚勭鏍煎紡<br />鐭╅樀鐨勫ぇ閲忕嚎鎬т唬鏁版柟闈㈢殑鍔熻兘銆傚湪鏌愪簺搴旂敤浣跨敤楂樻ц兘緙栬瘧鍣ㄧ殑鎯呭喌涓嬶紝姣斿In<br />tel鐨勭紪璇戝櫒錛屼粠浜х敓鐨勬眹緙栦唬鐮佸彲浠ョ湅鍑哄叾涓庢墜鍐欏嚑涔庢病鏈変袱鏍風殑鏁堣兘銆?/p> <p>銆銆(4) CGAL</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">www.cgal.org</font></u></a></p> <p>銆銆Computational Geometry Algorithms Library鐨勭洰鐨勬槸鎶婂湪璁$畻鍑犱綍鏂歸潰鐨勫ぇ<br />閮ㄥ垎閲嶈鐨勮В鍐蟲柟妗堝拰鏂規硶浠++搴撶殑褰㈠紡鎻愪緵緇欏伐涓氬拰瀛︽湳鐣岀殑鐢ㄦ埛銆?/p> <p>銆銆5.7 娓告垙寮鍙?/p> <p>銆銆(1) Audio/Video 3D C++ Programming Library</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.galacticasoftware.com/products/av/</font></u></a></p> <p>銆銆***3D鏄竴涓法騫沖彴錛岄珮鎬ц兘鐨凜++搴撱備富瑕佺殑鐗規ф槸鎻愪緵3D鍥懼艦錛屽0鏁堟敮鎸侊紙S<br />B,浠ュ強S3M錛夛紝鎺у埗鎺ュ彛錛堥敭鐩橈紝榧犳爣鍜岄仴鎰燂級錛孹MS銆?/p> <p>銆銆(2) KlayGE</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://home.g365.net/enginedev/</font></u></a></p> <p>銆銆鍥藉唴娓告垙寮鍙戦珮鎵嬭嚜宸辯敤C++寮鍙戠殑娓告垙寮曟搸銆侹layGE鏄竴涓紑鏀炬簮浠g爜銆佽法騫?br />鍙扮殑娓告垙寮曟搸錛屽茍浣跨敤Python浣滆剼鏈璦銆侹layGE鍦↙GPL鍗忚涓嬪彂琛屻傛劅璋㈤練鏁忔晱<br />鍏堢敓涓轟腑鍥芥父鎴忓紑鍙戜簨涓氭墍鍋氬嚭鐨勮礎鐚?/p> <p>銆銆(3) OGRE</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.ogre3d.org</font></u></a></p> <p>銆銆OGRE錛堥潰鍚戝璞$殑鍥懼艦娓叉煋寮曟搸錛夋槸鐢–++寮鍙戠殑錛屼嬌鐢ㄧ伒媧葷殑闈㈠悜瀵硅薄3D寮曟搸<br />銆傚畠鐨勭洰鐨勬槸璁╁紑鍙戣呰兘鏇存柟渚垮拰鐩存帴鍦板紑鍙戝熀浜?D紜歡璁懼鐨勫簲鐢ㄧ▼搴忔垨娓告垙銆?br />寮曟搸涓殑綾誨簱瀵規洿搴曞眰鐨勭郴緇熷簱錛堝錛欴irect3D鍜孫penGL錛夌殑鍏ㄩ儴浣跨敤緇嗚妭榪涜浜?br />鎶借薄錛屽茍鎻愪緵浜嗗熀浜庣幇瀹炰笘鐣屽璞$殑鎺ュ彛鍜屽叾瀹冪被銆?/p> <p>銆銆5.8 綰跨▼</p> <p>銆銆(1) C++ Threads</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://threads.sourceforge.net/</font></u></a></p> <p>銆銆榪欎釜搴撶殑鐩爣鏄粰紼嬪簭鍛樻彁渚涙槗浜庝嬌鐢ㄧ殑綾伙紝榪欎簺綾昏緇ф壙浠ユ彁渚涘湪Linux鐜<br />涓緢闅劇湅鍒扮殑澶ч噺鐨勭嚎紼嬫柟闈㈢殑鍔熻兘銆?/p> <p>銆銆(2) ZThreads</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://zthread.sourceforge.net/</font></u></a></p> <p>銆銆涓涓厛榪涚殑闈㈠悜瀵硅薄錛岃法騫沖彴鐨凜++綰跨▼鍜屽悓姝ュ簱銆?/p> <p>銆銆5.9 搴忓垪鍖?/p> <p>銆銆(1) s11n</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://s11n.net/</font></u></a></p> <p>銆銆涓涓熀浜嶴TL鐨凜++搴擄紝鐢ㄤ簬搴忓垪鍖朠OD錛孲TL瀹瑰櫒浠ュ強鐢ㄦ埛瀹氫箟鐨勭被鍨嬨?/p> <p>銆銆(2) Simple XML Persistence Library</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://sxp.sourceforge.net/</font></u></a></p> <p>銆銆榪欐槸涓涓妸瀵硅薄搴忓垪鍖栦負XML鐨勮交閲忕駭鐨凜++搴撱?/p> <p>銆銆5.10 瀛楃涓?/p> <p>銆銆(1) C++ Str Library</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.utilitycode.com/str/</font></u></a></p> <p>銆銆鎿嶄綔瀛楃涓插拰瀛楃鐨勫簱錛屾敮鎸乄indows鍜屾敮鎸乬cc鐨勫縐嶅鉤鍙般傛彁渚涢珮搴︿紭鍖栫殑<br />浠g爜錛屽茍涓旀敮鎸佸綰跨▼鐜鍜孶nicode錛屽悓鏃惰繕鏈夋鍒欒〃杈懼紡鐨勬敮鎸併?/p> <p>銆銆(2) Common Text Transformation Library</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://cttl.sourceforge.net/</font></u></a></p> <p>銆銆榪欐槸涓涓В鏋愬拰淇敼STL瀛楃涓茬殑搴撱侰TTL substring綾誨彲浠ョ敤鏉ユ瘮杈冿紝鎻掑叆錛?br />鏇挎崲浠ュ強鐢‥BNF鐨勮娉曡繘琛岃В鏋愩?/p> <p>銆銆(3) GRETA</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://research.microsoft.com/projects/greta/</font></u></a></p> <p>銆銆榪欐槸鐢卞井杞爺絀墮櫌鐨勭爺絀朵漢鍛樺紑鍙戠殑澶勭悊姝e垯琛ㄨ揪寮忕殑搴撱傚湪灝忓瀷鍖歸厤鐨勬儏鍐?br />涓嬫湁闈炲父浼樼鐨勮〃鐜般?/p> <p>銆銆5.11 緇煎悎</p> <p>銆銆(1) P::Classes</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://pclasses.com/</font></u></a></p> <p>銆銆涓涓珮搴﹀彲縐繪鐨凜++搴旂敤紼嬪簭妗嗘灦銆傚綋鍓嶅叧娉ㄧ被鍨嬪拰綰跨▼瀹夊叏鐨剆ignal/slot<br />鏈哄埗錛宨/o緋葷粺鍖呮嫭鍩轟簬鎻掍歡鐨勭綉緇滃崗璁忔槑鐨刬/o鏋舵瀯錛屽熀浜庢彃浠剁殑搴旂敤紼嬪簭娑堟伅<br />鏃ュ織妗嗘灦錛岃闂畇ql鏁版嵁搴撶殑綾葷瓑絳夈?/p> <p>銆銆(2) ACDK - Artefaktur Component Development Kit</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://acdk.sourceforge.net/</font></u></a></p> <p>銆銆榪欐槸涓涓鉤鍙版棤鍏崇殑C++緇勪歡妗嗘灦錛岀被浼間簬Java鎴栬?NET涓殑妗嗘灦錛堝弽灝勬満鍒訛紝<br />綰跨▼錛孶nicode錛屽簾鏂欐敹闆嗭紝I/O錛岀綉緇滐紝瀹炵敤宸ュ叿錛孹ML錛岀瓑絳夛級錛屼互鍙婂Java, P<br />erl, Python, TCL, Lisp, COM 鍜?CORBA鐨勯泦鎴愩?/p> <p>銆銆(3) dlib C++ library</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.cis.ohio-state.edu/~kingd/dlib/</font></u></a></p> <p>銆銆鍚勭鍚勬牱鐨勭被鐨勪竴涓患鍚堛傚ぇ鏁存暟錛孲ocket錛岀嚎紼嬶紝GUI錛屽鍣ㄧ被,浠ュ強嫻忚鐩?br />褰曠殑API絳夌瓑銆?/p> <p>銆銆(4) Chilkat C++ Libraries</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.chilkatsoft.com/cpp_libraries.asp</font></u></a></p> <p>銆銆榪欐槸鎻愪緵zip錛宔-mail錛岀紪鐮侊紝S/MIME錛孹ML絳夋柟闈㈢殑搴撱?/p> <p>銆銆(5) C++ Portable Types Library (PTypes)</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.melikyan.com/ptypes/</font></u></a></p> <p>銆銆榪欐槸STL鐨勬瘮杈冪畝鍗曠殑鏇夸唬鍝侊紝浠ュ強鍙Щ妞嶇殑澶氱嚎紼嬪拰緗戠粶搴撱?/p> <p>銆銆(6) LFC</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://lfc.sourceforge.net/</font></u></a></p> <p>銆銆鍝︼紝榪欏張鏄竴涓皾璇曟彁渚涗竴鍒囩殑C++搴?/p> <p>銆銆5.12 鍏朵粬搴?/p> <p>銆銆(1) Loki</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.moderncppdesign.com/</font></u></a></p> <p>銆銆鍝︼紝浣犲彲鑳芥姳鎬ㄦ垜鏃╄鍜孊oost涓璧蜂粙緇嶅畠錛屼竴涓疄楠屾ц川鐨勫簱銆備綔鑰呭湪loki涓?br />鎶奀++妯℃澘鐨勫姛鑳藉彂鎸ュ埌浜嗘瀬鑷淬傚茍涓斿皾璇曟妸綾諱技璁捐妯″紡榪欐牱鎬濇兂灞傞潰鐨勪笢瑗塊氳繃<br />搴撴潵鎻愪緵銆傚悓鏃惰繕鎻愪緵浜嗘櫤鑳芥寚閽堣繖鏍鋒瘮杈冨疄鐢ㄧ殑鍔熻兘銆?/p> <p>銆銆(2) ATL</p> <p>銆銆ATL(Active Template Library)</p> <p>銆銆鏄竴緇勫皬宸с侀珮鏁堛佺伒媧葷殑綾伙紝榪欎簺綾諱負鍒涘緩鍙簰鎿嶄綔鐨凜OM緇勪歡鎻愪緵浜嗗熀鏈殑<br />璁炬柦銆?/p> <p>銆銆(3) FC++: The Functional C++ Library</p> <p>銆銆榪欎釜搴撴彁渚涗簡涓浜涘嚱鏁板紡璇█涓墠鏈夌殑瑕佺礌銆傚睘浜庣敤搴撴潵鎵╁厖璇█鐨勪竴涓唬琛?br />浣溿傚鏋滄兂瑕佸湪OOP涔嬪瀵繪壘鍙︿竴鍒嗙殑涔愯叮錛屽彲浠ュ幓鐪嬬湅鍑芥暟寮忕▼搴忚璁$殑涓栫晫銆傚ぇ<br />甯圥eter Norvig鍦?鈥淭each Yourself Programming in Ten Years鈥濅竴鏂囦腑灝卞皢鍑?br />鏁板紡璇█鍒椾負鑷沖皯搴斿綋瀛︿範鐨?綾葷紪紼嬭璦涔嬩竴銆?/p> <p>銆銆(4) FACT!</p> <p>銆銆鍙傝冪綉绔欙細<a ><u><font color="#0000ff">http://www.kfa-juelich.de/zam/FACT/start/index.html</font></u></a></p> <p>銆銆鍙﹀涓涓疄鐜板嚱鏁板紡璇█鐗規х殑搴?/p> <p>銆銆(5) Crypto++</p> <p>銆銆鎻愪緵澶勭悊瀵嗙爜錛屾秷鎭獙璇侊紝鍗曞悜hash錛屽叕鍖欏姞瀵嗙郴緇熺瓑鍔熻兘鐨勫厤璐瑰簱銆?/p> <p>銆銆榪樻湁寰堝闈炲父嬋鍔ㄤ漢蹇冩垨鑰呮槸鏋佸叾瀹炵敤鐨凜++搴擄紝闄愪簬鎴戜滑鐨勬按騫充互鍙婃枃绔犵殑綃?br />騫呬笉鑳藉寘鎷繘鏉ャ傚湪瀵逛簬榪欎簺宸茬粡鍖呭惈榪戞潵鐨勫簱鐨勪粙緇嶄腑錛岀敱浜庡茍涓嶆槸姣忎竴涓垜浠?br />閮戒嬌鐢ㄨ繃錛屾墍浠ラ毦鍏嶆湁鍋忛涔嬪錛岃璇昏呰璋呫?/p> <p>------------------------------------------------------------------------<br />--------</p> <p>銆銆6錛屼功綾?/p> <p>銆銆浠ュ墠鐔婅妭鍏堢敓鏇炬挵鏂囪瘎璁虹浉瀵逛簬Java紼嬪簭璁捐璇█錛孋++鐨勫ソ涔﹀濡傜墰姣涖傝崳鑰<br />鍏堢敓鍦ㄣ婄▼搴忓憳銆嬫潅蹇椾笂鎾版枃銆奀++紼嬪簭璁捐涔嬪洓涔︿簲緇忋嬩篃灝嗘湰棰嗗煙鍐呭嚑涔庢墍鏈夌殑<br />緇忓吀涔︾睄浣滀簡鍏ㄩ潰鐨勪粙緇?浠諱綍鍏充簬涔︾殑璇勮姝ゆ椂鐪嬫潵渚挎槸寰堝浣欑殑浜嗐備釜浜烘祬瑙侊紝<br />闄ら潪浣犳墦綆椾互C++浣滀負鍞竴鍏磋叮鎴栬呯敓瀛樹箣鏈紝涓鑸鑰呯‘瀹炴病鏈夎凍澶熺殑鏃墮棿鍜屽繀瑕?br />灝?0浣欐湰涔︾睄鍏ㄩ儴闃呰銆傛洿鏈夊弬鑰冧環鍊肩殑鏄崳鑰鍏堢敓鐨勫彟涓綃囨枃绔狅細銆婅嚦灝戝簲璇ラ槄<br />璇葷殑涔濇湰C++钁椾綔銆嬶紝鍙互浠庝笅闈㈢殑鍦板潃嫻忚鍒版鏂囷細</p> <p>銆銆<a ><u><font color="#0000ff">http://www.royaloo.com/articles/articles_2003/9CppBooks.htm</font></u></a></p> <p>銆銆涓嬮潰鍑犳湰涔﹀浜庤蛋鍦–++鍒濆涔嬭礬涓婄殑璇昏呮槸鎴戜滑鏈鎰挎剰鎺ㄨ崘緇欏ぇ瀹剁殑錛?/p> <p>銆銆(1) 銆奀++ Primer銆?/p> <p>銆銆鍝︼紝涔熻浣犱細鎶辨ㄦ垜浠負浠涔堜笉鍏堜粙緇峊CPL,浣嗗浜庤蛋鍦ㄥ涔犱箣璺笂鐨勫叆闂ㄨ咃紝<br />鏈功鍐呭鏇翠負鍏ㄩ潰錛屾洿涓鴻緇嗘槗鎳傦紝鎴戜滑縐板畠涓衡淐++鐨勮秴綰у疂鍏糕濆茍涓嶈繃鍒嗐傞厤鏈?br />涓鏈笉閿欑殑涔犻瑙g瓟銆奀++ Primer Answer Book銆嬪彲浠ヨ緟鍔╀綘鐨勫涔犱箣璺?/p> <p>銆銆(2) 銆奅ssential C++銆?/p> <p>銆銆濡傛灉璇淬奀++ Primer銆嬫槸C++棰嗗煙鐨勮秴綰у疂鍏革紝閭d箞姝や功浣滀負鎺屾彙C++鐨勫ぇ灞瑙?br />褰撲箣鏃犳劎銆傛濡傘?NET澶у眬瑙傘嬩竴涔﹁兘澶熻璇昏呭叏鎻?NET錛屾湰涔﹁榪頒簡C++涓渶鏍稿績<br />鐨勫叏閮ㄤ富棰樸備功铏戒笉鍘氾紝鍐呭綺劇偧錛屼笉澶變負銆奀++ Primer銆嬭鑰呰尪浣欓キ鍚庣殑涓婚鍥?br />欏句箣浣溿?/p> <p>銆銆(3) 銆奣he C++ Programming Language銆?/p> <p>銆銆Bjarne涓轟綘甯︽潵鐨凜++鏁欑▼錛岀湡姝h兘澶熷憡璇変綘鎬庝箞鐢ㄦ墠鍙湡姝g殑C++鐨勫敮涓涓鏈?br />涔︺傝櫧鐒跺鍚屸滄煇鏌愮▼搴忚璁¤璦鈥濊繖鏍風殑涔︾睄浼氱粰澶у涓涓唴瀹瑰叏鎻斤紝鍏ラ棬鍒扮簿<br />閫氱殑鎰熻錛屼絾鏈功紜疄涓嶅お閫傚悎鍒濆鑰呴槄璇匯傚鏋滀綘鑷涓烘槸涓鍚嶅緢鏈夌粡楠岀殑C++紼?br />搴忓憳錛岄偅鑷沖皯涔熻鍙嶅鍜鍤糂jarne鍏堢敓鎵寮鴻皟鐨勮嫢騫插唴瀹廣?/p> <p>銆銆(4) 銆奅ffective C++銆嬶紝銆奙ore Effective C++銆?/p> <p>銆銆鏄殑錛屾濡備竴浜汣++鐖卞ソ鑰呯粡甯鎬互璇昏繃涓庢病鏈夎榪囦笂榪頒袱鏈綔鍝佹潵鍖哄垎浣犳槸鍚︽槸<br />C++楂樻墜銆傛垜浠篃鏋佸姏鎺ㄥ磭榪欎袱鏈憲浣溿傚湪鍚勭浠嬬粛C++涓撳緇忛獙鐨勪功綾嶉噷闈紝榪欎袱<br />鏈槸鏈璐磋繎璇█鏈川錛岀湅鍚庢渶鑳藉鏈夎劚鑳庢崲楠ㄦ劅瑙夌殑涔︼紝璇繪涔︿綘闇姣忔棩涓夌渷姹濊韓<br />銆?/p> <p>銆銆鎶鏈功綾嶄粊鑰呰浠侊紝榪囧鐨勮瘎璁哄弽鏃犲お澶氭剰涔夛紝鐢辮鑰呭枩濂介夋嫨鏈閫傚悎鑷繁鐨?br />涔︽柟涓轟笂絳栥?/p> <p>------------------------------------------------------------------------<br />--------</p> <p>銆銆7錛岃祫婧愮綉绔?/p> <p>銆銆姝e鎴戜滑鍙互閫氳繃璁$畻鏈哄巻鍙蹭笂鐨勯噸瑕佷漢鐗╀簡瑙h綆楁満鍙茬殑鍙戝睍錛孋++鐩稿叧浜虹墿<br />鐨勭綉绔欎篃鍙互浣挎垜浠緱鍒版渶鏈変環鍊肩殑鍙傝冧笌鍊熼壌錛屼笅闈㈢殑浜虹墿鎴戜滑璁や負娌℃湁浠嬬粛鐨?br />蹇呰錛屽彧鍥犱笅闈㈢殑浜虹墿鍦–++棰嗗煙鐨勫湴浣嶄紬鎵鍛ㄧ煡錛屾垜浠彧灝嗙浉鍏崇殑璧勬簮榪涜緗楀垪浠?br />渚涜鑰呭涔狅紝浠栦滑鏈夌殑宸ヤ綔浜庤礉灝斿疄楠屽錛屾湁鐨勫伐浣滀簬鐭ュ悕緙栬瘧鍣ㄥ巶鍟嗭紝鏈夌殑鍦ㄤ笉<br />鏂帹榪涜璦鐨勬爣鍑嗗寲錛屾湁鐨勪負璇昏呮挵鍐欎簡澶氶儴鍗冨彜濂囦綔鈥︹?br />銆銆(1) Bjarne Stroustrup<br />銆銆<a ><u><font color="#0000ff">http://www.research.att.com/~bs/</font></u></a></p> <p>銆銆(2) Stanley B. Lippman<br />銆銆<a ><u><font color="#0000ff">http://blogs.msdn.com/slippman/</font></u></a><br />銆銆涓枃鐗?<a ><u><font color="#0000ff">http://www.zengyihome.net/slippman/index.htm</font></u></a></p> <p>銆銆(3) Scott Meyers<br />銆銆<a ><u><font color="#0000ff">http://www.aristeia.com/</font></u></a></p> <p>銆銆(4) David Musser<br />銆銆<a ><u><font color="#0000ff">http://www.cs.rpi.edu/~musser/</font></u></a></p> <p>銆銆(5) Bruce Eckel<br />銆銆<a ><u><font color="#0000ff">http://www.bruceeckel.com</font></u></a></p> <p>銆銆(6) Nicolai M. Josuttis<br />銆銆<a ><u><font color="#0000ff">http://www.josuttis.com/</font></u></a></p> <p>銆銆(7) Herb Sutter<br />銆銆<a ><u><font color="#0000ff">http://www.gotw.ca/</font></u></a></p> <p>銆銆(8) Andrei Alexandrescu<br />銆銆<a ><u><font color="#0000ff">http://www.coderncppdesign.com/</font></u></a></p> <p>銆銆(9) 渚嵎鍏堢敓<br />銆銆<a ><u><font color="#0000ff">http://www.jjhou.com</font></u></a></p> <p>銆銆(10) 瀛熷博鍏堢敓<br />銆銆鍏堢敓綣佸繖浜庡伐浣滐紝鐥磋糠浜庢妧鏈紝鏆傛棤涓漢涓婚〉錛屽叧浜庡厛鐢熺殑浣滃搧鍙互閫氳繃CSDN<br />鐨勪笓鏍忓拰渚厛鐢熺殑涓婚〉璁塊棶鍒般?/p> <p>銆銆(11) 鑽h鍏堢敓<br />銆銆<a ><u><font color="#0000ff">http://www.royaloo.com/</font></u></a></p> <p>銆銆(12) 娼樼埍姘戝厛鐢?br />銆銆<a ><u><font color="#0000ff">http://www.icst.pku.edu.cn/panaimin/pam_homepage.htm</font></u></a></p> <p>銆銆闄や簡涓婅堪澶у笀鐨勪富欏靛錛屼互涓嬬殑緇煎悎綾籆++瀛︿範鍙傝冪珯鐐規槸鎴戜滑闈炲父鎰挎剰鍚戝ぇ瀹?br />鎺ㄨ崘鐨勶細</p> <p>銆銆(1) CodeProject<br />銆銆<a ><u><font color="#0000ff">http://www.codeproject.com</font></u></a></p> <p>銆銆(2) CodeGuru<br />銆銆<a ><u><font color="#0000ff">http://www.codeguru.com</font></u></a></p> <p>銆銆(3) Dr. Dobb's Journal<br />銆銆<a ><u><font color="#0000ff">http://www.ddj.com</font></u></a></p> <p>銆銆(4) C/C++ Users Journal<br />銆銆<a ><u><font color="#0000ff">http://www.cuj.com</font></u></a></p> <p>銆銆(5) C緇磋鐐?br />銆銆<a ><u><font color="#0000ff">http://www.c-view.org</font></u></a></p> <p>銆銆(6) allaboutprogram<br />銆銆<a ><u><font color="#0000ff">http://www.allaboutprogram.com</font></u></a><br />銆銆鍏朵粬璧勬枡</p> <p>銆銆(1) ISO IEC JTC1/SC22/WG21 - C++錛氭爣鍑咰++鐨勬潈濞佸弬鑰?br />銆銆<a ><u><font color="#0000ff">http://anubis.dkuug.dk/jtc1/sc22/wg21/</font></u></a></p> <p>銆銆(2) C++ FAQ LITE 鈥?Frequently Asked Questions: 鏈涓哄叏闈㈢殑C++FAQ<br />銆銆<a ><u><font color="#0000ff">http://www.sunistudio.com/cppfaq/index.html</font></u></a><br />銆銆C/C++ 鏂伴椈緇勶細<br />銆銆浣犱笉濡ㄥ皾璇曚粠榪欓噷鎻愰棶鍜屽洖絳旈棶棰橈紝寰堝涓嶉敊鐨凲&A璧勬簮......</p> <p>銆銆(1) .alt.comp.lang.learn.c-c++<br />銆銆榪欎釜綆鍗曚簺錛屽鏋滀綘鍜屾垜涓鏍鋒槸涓彍楦?/p> <p>銆銆(2) .comp.lang.c++.moderated<br />聽聽聽 鍡紝榪欎釜鏄劇劧姘村鉤楂樹竴浜?/p> <p>銆銆(3) .comp.std.c++<br />銆銆濡傛灉浣犻渶瑕佽璁烘爣鍑咰++鐩稿叧璇濋鐨勮瘽</p> <p>------------------------------------------------------------------------<br />--------</p> <p>銆銆8錛屼笉寰椾笉鍐欑殑緇撴潫璇?/p> <p>銆銆緇撴潫鐨勬椂鍊欎篃鏄葷粨鐜扮姸錛屽睍鏈涙湭鏉ョ殑鏃跺欍傝櫧鐒禖++浠庤劚鑳庝簬C寮濮嬶紝涓璺壈<br />闅懼潕鍧風殑璧拌繃鏉ワ紝浣嗘槸鏃犺濡備綍C++宸茬粡鍙栧緱浜嗗伐涓氬熀紜鐨勫湴浣嶃傛枃绔犲垪涓劇殑澶ч噺鐩稿叧<br />璧勬簮灝辨槸鏈濂界殑璇佹槑錛岃屼笟鐣岀殑澶ч噺鐢–++鍐欐垚鐨勪駭鍝佷唬鐮佷互鍙婂ぇ閲忕殑C++鑱屼笟宸ョ▼<br />甯堝垯鏄渶鐩存帴鐨勮瘉鏄庛傚悓鏃訛紝鎴戜滑鍙互鐪嬪埌鍚勪釜楂樻牎鐨勮綆楁満涓撲笟閮藉紑璁炬湁C++榪欓棬<br />璇劇▼錛岀綉緇滀笂瀵逛簬C++鐨勫涔犺璁轟篃浠庢潵閮芥病鏈夊仠榪囥備絾鏄紝鍦↗ava鍜?NET涓ゅぇ浼佷笟<br />寮鍙戝鉤鍙扮殑鍥存敾涓嬶紝緇欎漢鐨勬劅瑙夋槸C++瓚婃潵瓚娾滀笉琛屸濅簡銆?/p> <p>銆銆C++鍦ㄩ潰鍚戜紒涓氱殑杞歡寮鍙戜腑錛屽湪寮鍙戜究鎹鋒х瓑鏂歸潰鐨勭‘瑕佹瘮Java鍜孋#宸緢澶氾紝<br />鍏朵腑涓涓棶棰樻槸C++璇█鏈韓姣旇緝澶嶆潅錛屽涔犳洸綰挎瘮杈冮櫋宄紝鍙﹀涓涓棶棰樻槸C++鏍?br />鍑嗗寲鐨勬椂闂村お闀匡紝涓уけ浜嗗緢澶氱殑澹ぇ鏈轟細錛岃楄垂浜嗗緢澶氱簿鍔涘湪鍘傚晢鐨勪箣闂寸殑鏂椾簤涓?br />錛岃孋++鐨勬爣鍑嗗簱紱諱竴涓畬鍠勭殑紼嬪簭寮鍙戞鏋惰繕緙哄皯澶澶鐨勫唴瀹癸紝鍚勪釜絎笁鏂圭殑<br />綾誨簱鍜屾鏋跺張鍦ㄤ竴鑷存у拰瀹屾暣鎬т笂娌℃硶鍜岄殢騫沖彴鎻愪緵鐨勬鏋剁浉鎻愬茍璁恒傞毦閬揅++鐪熺殑<br />瑕侀鍑哄巻鍙茶垶鍙頒簡錛?/p> <p>銆銆浠嶤++鐩墠鐨勬椿璺冪▼搴︼紝浠ュ強搴旂敤鐜扮姸鏉ヨ鏄畬鍏ㄨ兘澶熻偗瀹欳++浠嶇劧鏄蔣浠跺伐涓?br />鐨勫熀紜錛屼篃涓嶄細閫鍑哄巻鍙茶垶鍙扮殑銆傚彟澶栦粠Boost錛孡oki榪欎簺搴撲腑鎴戜滑涔熻兘澶熺湅鍒癈++<br />鐨勫彂灞曢潪甯告椿璺冿紝瀵逛簬鏂版妧鏈柊鎬濈淮闈炲父嬋榪涳紝C++浠嶇劧騫挎硾鍙楀埌鍏蟲敞銆備粠ACE鍦ㄩ珮<br />鎬ц兘閫氫俊棰嗗煙鐨勫簲鐢紝浠ュ強MTL榪欐牱鐨勫簱鍦ㄦ暟鍊艱綆楅鍩熺殑鍑鴻壊琛ㄧ幇錛屾垜浠彲浠ョ湅鍒?br />C++鍦ㄩ珮鎬ц兘搴旂敤鍦哄悎涓嬬殑涓嶅彲鏇夸唬鐨勪綔鐢紝鑰屽祵鍏ュ紡緋葷粺榪欐牱鐨勫唴瀛樺彈闄愬紑鍙戝鉤鍙?br />錛屾瘮濡係ymbian OS涓婏紝C++宸茬粡鍙戞尌鐫騫朵笖灝嗗彂鎸ユ洿澶х殑浣滅敤銆傚彲浠ラ瑙佺殑鏄互鍚庣殑<br />杞歡鏃犺涓婂眰鐨勫簲鐢ㄦ庝箞鍙橈紝瀹冪殑搴曞眰鏍稿績閮戒細鏄敱C/C++榪欐牱鐨勭郴緇熺駭杞歡緙栧啓鐨?br />錛屾瘮濡侸ava铏氭嫙鏈猴紝.NET Framwork銆傚洜涓哄彧鏈夎繖鏍風殑緋葷粺綰ц蔣浠舵墠鑳藉畬鍏ㄥ交搴曠殑鍙?br />鎸ユ満鍣ㄧ殑鍔熻兘銆?/p> <p>銆銆闇瑕佺湅鍒扮殑鏄袱涓秼鍔匡紝涓涓秼鍔挎槸C++鍙樺緱鏇村姞澶嶆潅錛屾洿鍔犲闄㈡淳錛岄氳繃妯℃澘<br />絳夋湁娼滃姏鐨勮娉曞洜绱犳瀯閫犺秺鏉ヨ秺綺懼閥鐨勫簱鎴愪負浜嗙幇浠++鐨勭儹鐐癸紝铏界劧鍦ㄥ埄鐢ㄥ簱瀹炵幇<br />鏂扮殑緙栫▼鑼冨紡錛屼箖鑷寵璁℃ā寮忕瓑鏂歸潰寰堟湁寮鍒涙剰涔夛紝涔熺‘瀹炰駭鐢熶簡涓浜涜兘澶熶究鎹峰紑<br />鍙戠殑宸ュ叿錛屼絾鏄洿澶氱殑鏄妸C++鍙樺緱鏇村姞寮哄ぇ錛屾洿鍔犲鏉傦紝涔熸洿鍔犻毦鎳傦紝浼間箮涔熸洿鍔?br />瀛﹂櫌媧撅紝涓嶅緱涓嶈瀹冩鍦ㄥ悜杈圭紭鍖栭亾璺彂灞曘傚彟涓涓秼鍔挎槸C++鍦ㄤ富嫻佺殑浼佷笟搴旂敤寮<br />鍙戜腑宸茬粡閫愭笎閫鍑轟簡錛孍RP榪欐牱鐨勪紒涓氳蔣浠跺紑鍙戜腑鍩烘湰涓婁笉浼氳冭檻C++錛岄櫎闈為渶瑕佽?br />铏戞ц兘鎴栬呭拰閬楃暀浠g爜鐨勯泦鎴愯繖浜涘洜绱犮侰++閫瀹堝埌緋葷粺綰у埆璇█錛屾垚涓鴻蔣浠跺伐涓氱殑<br />鍩虹鏄ぇ鍔挎墍瓚嬨傜劧鑰屽弽鎬濅竴涓嬶紝鐪熺殑鏄瀹堜箞錛熻嚜浠嶴TL鍑虹幇錛屾棤鏁扮殑浜洪璧蜂簯娑?br />鐨勫紑濮嬫敮鎸丆++,浠栦滑鐙傚懠鈥滄垜鐪嬪埌娣卞娑堝け浜嗭紝鐩爣杞歡宸ョ▼鐨勫嚭鐜般傛垜鐪嬪埌浜嗗彲<br />緇存姢鐨勪唬鐮併傗濇槸鐨勶紝STL鍦ㄥ彲緇存姢鎬т笅鍋氬緱濡傛鍑鴻壊銆備絾鏄張鎬庢牱鍛紵STL涓篊++閾?br />騫充簡鐜頒唬杞歡宸ョ▼鐨勯亾璺紝鑰屽湪涓婂眰搴旂敤紼嬪簭杞歡寮鍙戦鍩熻繖鍧楀満鍦版棭涓嶅崟鐙睘浜?br />C++,寰堝紼嬪簭璁捐璇█閮藉仛寰楀緢鍑鴻壊錛岀柉鐙傜殑鏀寔鑰呬細姣笉鐘硅鮑鍦拌鎴戜滑搴斿綋鏀寔<br />C++,鍥犱負瀹冩槸涓栫晫涓婃渶媯掔殑璇█銆傝屽潶鐜囧湴璇達紝浣犵殑鑵版潌鐪熺殑閭d箞紜箞錛熶篃璁稿彧鏄?br />鍦ㄩ冮伩涓浜涗簨瀹炪侰++鏄紭縐鐨勶紝榪欎笉鍙惁璁わ紝STL鐨勫嚭鐜拌C++涓搴﹁蛋涓婁簡鏈杈夌厡鐨?br />鏃跺埢錛岀劧鑰岀幇鍦ㄧ湅鏉モ︹︽垜鐨勪竴浣嶆仼甯堟浘璦錛氱湡姝h兘澶熷皢STL搴旂敤寰楁穻婕撳敖鑷寸殑浜哄緢<br />淇濆畧鍦拌鍥藉唴涔熶笉瓚呰繃200浜猴紝鎴栬涓嶅姞鍏TL鑳藉浣緾++鍚戠潃瀹冨簲褰撳彂灞曠殑鏂瑰悜鍙戝睍<br />鐨勬洿濂斤紝鑰岀幇鍦ㄧ湅鏉ワ紝C++涔熷簲褰撳洖棣栧埌鐪熸灞炰簬浠栫殑閭d竴鐗囧湥鍦頒笂鈥︹?/p> <br /> <img src ="http://m.shnenglu.com/erran/aggbug/34178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/erran/" target="_blank">erran</a> 2007-10-14 00:14 <a href="http://m.shnenglu.com/erran/archive/2007/10/14/34178.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>杞細C++鐨?縐嶇被鍨嬭漿鎹?http://m.shnenglu.com/erran/archive/2007/10/13/34150.htmlerranerranSat, 13 Oct 2007 13:27:00 GMThttp://m.shnenglu.com/erran/archive/2007/10/13/34150.htmlhttp://m.shnenglu.com/erran/comments/34150.htmlhttp://m.shnenglu.com/erran/archive/2007/10/13/34150.html#Feedback0http://m.shnenglu.com/erran/comments/commentRss/34150.htmlhttp://m.shnenglu.com/erran/services/trackbacks/34150.html 鍘熸枃錛歨ttp://blog.csdn.net/stanleyrprose/archive/2006/01/25/588083.aspx
浣滆咃細


C++鐨?縐嶇被鍨嬭漿鎹?


涓銆丆 椋庢牸錛圕-style錛夊己鍒惰漿鍨嬪涓嬶細

聽聽聽 (T) expression // cast expression to be of type T
聽聽聽 鍑芥暟椋庢牸錛團unction-style錛夊己鍒惰漿鍨嬩嬌鐢ㄨ繖鏍風殑璇硶錛?br />聽聽聽 T(expression) // cast expression to be of type T
聽聽聽 榪欎袱縐嶅艦寮忎箣闂存病鏈夋湰璐ㄤ笂鐨勪笉鍚岋紝瀹冪函綺瑰氨鏄竴涓妸鎷彿鏀懼湪鍝殑闂銆傛垜鎶婅繖涓ょ褰㈠紡縐頒負鏃ч鏍鹼紙old-style錛夌殑寮哄埗杞瀷銆?

聽聽聽浜屻?C++鐨勫洓縐嶅己鍒惰漿鍨嬪艦寮忥細

銆銆C++ 鍚屾椂鎻愪緵浜嗗洓縐嶆柊鐨勫己鍒惰漿鍨嬪艦寮忥紙閫氬父縐頒負鏂伴鏍肩殑鎴?C++ 椋庢牸鐨勫己鍒惰漿鍨嬶級錛?
銆銆const_cast(expression)
銆銆dynamic_cast(expression)
銆銆reinterpret_cast(expression)
銆銆static_cast(expression)

銆銆姣忎竴縐嶉傜敤浜庣壒瀹氱殑鐩殑錛?

銆銆路dynamic_cast 涓昏鐢ㄤ簬鎵ц鈥滃畨鍏ㄧ殑鍚戜笅杞瀷錛坰afe downcasting錛夆濓紝涔熷氨鏄錛岃紜畾涓涓璞℃槸鍚︽槸涓涓戶鎵夸綋緋諱腑鐨勪竴涓壒瀹氱被鍨嬨傚畠鏄敮涓涓嶈兘鐢ㄦ棫椋庢牸璇硶鎵ц鐨勫己鍒惰漿鍨嬶紝涔熸槸鍞竴鍙兘鏈夐噸澶ц繍琛屾椂浠d環鐨勫己鍒惰漿鍨嬨?br />聽聽聽
聽聽聽 路static_cast 鍙互琚敤浜庡己鍒墮殣鍨嬭漿鎹紙渚嬪錛宯on-const 瀵硅薄杞瀷涓?const 瀵硅薄錛宨nt 杞瀷涓? double錛岀瓑絳夛級錛屽畠榪樺彲浠ョ敤浜庡緢澶氳繖鏍風殑杞崲鐨勫弽鍚戣漿鎹紙渚嬪錛寁oid* 鎸囬拡杞瀷涓烘湁綾誨瀷鎸囬拡錛屽熀綾繪寚閽堣漿鍨嬩負媧劇敓綾繪寚閽堬級錛屼絾鏄畠涓嶈兘灝嗕竴涓?const 瀵硅薄杞瀷涓?non-const 瀵硅薄錛堝彧鏈? const_cast 鑳藉仛鍒幫級錛屽畠鏈鎺ヨ繎浜嶤-style鐨勮漿鎹€?br />聽聽聽
銆銆路const_cast 涓鑸敤浜庡己鍒舵秷闄ゅ璞$殑甯擱噺鎬с傚畠鏄敮涓鑳藉仛鍒拌繖涓鐐圭殑 C++ 椋庢牸鐨勫己鍒惰漿鍨嬨?

銆銆路reinterpret_cast 鏄壒鎰忕敤浜庡簳灞傜殑寮哄埗杞瀷錛屽鑷村疄鐜頒緷璧栵紙implementation-dependent錛夛紙灝辨槸璇達紝涓嶅彲縐繪錛夌殑緇撴灉錛屼緥濡傦紝灝嗕竴涓寚閽堣漿鍨嬩負涓涓暣鏁般傝繖鏍風殑寮哄埗杞瀷鍦ㄥ簳灞備唬鐮佷互澶栧簲璇ユ瀬涓虹綍瑙併?br />銆銆
銆 銆鏃ч鏍肩殑寮哄埗杞瀷渚濈劧鍚堟硶錛屼絾鏄柊鐨勫艦寮忔洿鍙彇銆傞鍏堬紝鍦ㄤ唬鐮佷腑瀹冧滑鏇村鏄撹瘑鍒紙鏃犺鏄漢榪樻槸鍍?grep 榪欐牱鐨勫伐鍏烽兘鏄姝わ級錛岃繖鏍峰氨綆鍖栦簡鍦ㄤ唬鐮佷腑瀵繪壘綾誨瀷緋葷粺琚牬鍧忕殑鍦版柟鐨勮繃紼嬨傜浜岋紝鏇寸簿紜湴鎸囧畾姣忎竴涓己鍒惰漿鍨嬬殑鐩殑錛屼嬌寰楃紪璇戝櫒璇婃柇浣跨敤閿欒鎴愪負鍙? 鑳姐備緥濡傦紝濡傛灉浣犺瘯鍥句嬌鐢ㄤ竴涓?const_cast 浠ュ鐨勬柊椋庢牸寮哄埗杞瀷鏉ユ秷闄ゅ父閲忔э紝浣犵殑浠g爜灝嗘棤娉曠紪璇戙?

==聽
==聽 dynamic_cast .vs. static_cast
==

class B { ... };
class D : public B { ... };

void f(B* pb)
{
聽聽 D* pd1 = dynamic_cast<D*>(pb);
聽聽 D* pd2 = static_cast<D*>(pb);
}

If pb really points to an object of type D, then pd1 and pd2 will get the same value. They will also get the same value if pb == 0.

If pb points to an object of type B and not to the complete D class, then dynamic_cast will know enough to return zero. However, static_cast relies on the programmer鈥檚 assertion that pb points to an object of type D and simply returns a pointer to that supposed D object.

聽聽聽 鍗砫ynamic_cast鍙敤浜庣戶鎵夸綋緋諱腑鐨勫悜涓嬭漿鍨嬶紝鍗沖皢鍩虹被鎸囬拡杞崲涓烘淳鐢熺被鎸囬拡錛屾瘮static_cast鏇翠弗鏍兼洿瀹夊叏銆? dynamic_cast鍦ㄦ墽琛屾晥鐜囦笂姣攕tatic_cast瑕佸樊涓浜?浣唖tatic_cast鍦ㄦ洿瀹戒笂鑼冨洿鍐呭彲浠ュ畬鎴愭槧灝?榪欑涓嶅姞闄愬埗鐨勬槧灝勪即闅? 鐫涓嶅畨鍏ㄦ?static_cast瑕嗙洊鐨勫彉鎹㈢被鍨嬮櫎綾誨眰嬈$殑闈欐佸鑸互澶?榪樺寘鎷棤鏄犲皠鍙樻崲,紿勫寲鍙樻崲(榪欑鍙樻崲浼氬鑷村璞″垏鐗?涓㈠け淇℃伅),鐢? VOID*鐨勫己鍒跺彉鎹?闅愬紡綾誨瀷鍙樻崲絳?..


==
==聽 static_cast .vs. reinterpret_cast
==

聽聽聽 reinterpret_cast鏄負浜嗘槧灝勫埌涓涓畬鍏ㄤ笉鍚岀被鍨嬬殑鎰忔?榪欎釜鍏抽敭璇嶅湪鎴戜滑闇瑕佹妸綾誨瀷鏄犲皠鍥炲師鏈夌被鍨嬫椂鐢ㄥ埌瀹?鎴戜滑鏄犲皠鍒扮殑綾誨瀷浠呬粎鏄負浜嗘晠寮勭巹铏氬拰鍏朵粬鐩殑,榪欐槸鎵鏈夋槧灝勪腑鏈鍗遍櫓鐨?(榪欏彞璇濇槸C++緙栫▼鎬濇兂涓殑鍘熻瘽)

聽聽聽 static_cast 鍜?reinterpret_cast 鎿嶄綔絎︿慨鏀逛簡鎿嶄綔鏁扮被鍨? 瀹冧滑涓嶆槸浜掗嗙殑; static_cast 鍦ㄧ紪璇戞椂浣跨敤綾誨瀷淇℃伅鎵ц杞崲, 鍦ㄨ漿鎹㈡墽琛屽繀瑕佺殑媯嫻?璇稿鎸囬拡瓚婄晫璁$畻, 綾誨瀷媯鏌?. 鍏舵搷浣滄暟鐩稿鏄畨鍏ㄧ殑. 鍙︿竴鏂歸潰, reinterpret_cast 浠呬粎鏄噸鏂拌В閲婁簡緇欏嚭鐨勫璞$殑姣旂壒妯″瀷鑰屾病鏈夎繘琛屼簩榪涘埗杞崲, 渚嬪瓙濡備笅:

聽聽聽 int n=9; double d=static_cast < double > (n);

聽聽聽 涓婇潰鐨勪緥瀛愪腑, 鎴戜滑灝嗕竴涓彉閲忎粠 int 杞崲鍒?double. 榪欎簺綾誨瀷鐨勪簩榪涘埗琛ㄨ揪寮忔槸涓嶅悓鐨? 瑕佸皢鏁存暟 9 杞崲鍒?鍙岀簿搴︽暣鏁?9, static_cast 闇瑕佹紜湴涓哄弻綺懼害鏁存暟 d 琛ヨ凍姣旂壒浣? 鍏剁粨鏋滀負 9.0. 鑰宺einterpret_cast 鐨勮涓哄嵈涓嶅悓:

聽聽聽 int n=9;
聽聽聽 double d=reinterpret_cast<double & > (n);

聽聽聽 榪欐, 緇撴灉鏈夋墍涓嶅悓. 鍦ㄨ繘琛岃綆椾互鍚? d 鍖呭惈鏃犵敤鍊? 榪欐槸鍥犱負 reinterpret_cast 浠呬粎鏄鍒?n 鐨勬瘮鐗逛綅鍒?d, 娌℃湁榪涜蹇呰鐨勫垎鏋?

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

erran 2007-10-13 21:27 鍙戣〃璇勮
]]>
杞細鍫嗗拰鏍堢殑鍖哄埆 http://m.shnenglu.com/erran/archive/2007/10/13/34148.htmlerranerranSat, 13 Oct 2007 13:12:00 GMThttp://m.shnenglu.com/erran/archive/2007/10/13/34148.htmlhttp://m.shnenglu.com/erran/comments/34148.htmlhttp://m.shnenglu.com/erran/archive/2007/10/13/34148.html#Feedback0http://m.shnenglu.com/erran/comments/commentRss/34148.htmlhttp://m.shnenglu.com/erran/services/trackbacks/34148.html 鍙傝http://kb.csdn.net/.net/Articles/200605/80f93200-6a0c-4e21-82d8-4212844da589.html


鍫嗗拰鏍堢殑鍖哄埆


涓鑸涓哄湪c涓垎涓鴻繖鍑犱釜瀛樺偍鍖?
1鏍?- 鏈夌紪璇戝櫒鑷姩鍒嗛厤閲婃斁
2鍫?- 涓鑸敱紼嬪簭鍛樺垎閰嶉噴鏀撅紝鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鑳界敱OS鍥炴敹
3鍏ㄥ眬鍖猴紙闈欐佸尯錛夛紝鍏ㄥ眬鍙橀噺鍜岄潤鎬佸彉閲忕殑瀛樺偍鏄斁鍦ㄤ竴鍧楃殑錛屽垵濮嬪寲鐨勫叏灞鍙橀噺鍜岄潤
鎬佸彉閲忓湪涓鍧楀尯鍩燂紝鏈垵濮嬪寲鐨勫叏灞鍙橀噺鍜屾湭鍒濆鍖栫殑闈欐佸彉閲忓湪鐩擱偦鐨勫彟涓鍧楀尯鍩熴?
- 紼嬪簭緇撴潫閲婃斁
4鍙﹀榪樻湁涓涓笓闂ㄦ斁甯擱噺鐨勫湴鏂廣?- 紼嬪簭緇撴潫閲婃斁
鍦ㄥ嚱鏁頒綋涓畾涔夌殑鍙橀噺閫氬父鏄湪鏍堜笂錛岀敤malloc, calloc, realloc絳夊垎閰嶅唴瀛樼殑鍑芥暟鍒?
閰嶅緱鍒扮殑灝辨槸鍦ㄥ爢涓娿傚湪鎵鏈夊嚱鏁頒綋澶栧畾涔夌殑鏄叏灞閲忥紝鍔犱簡static淇グ絎﹀悗涓嶇鍦ㄥ摢
閲岄兘瀛樻斁鍦ㄥ叏灞鍖猴紙闈欐佸尯錛?鍦ㄦ墍鏈夊嚱鏁頒綋澶栧畾涔夌殑static鍙橀噺琛ㄧず鍦ㄨ鏂囦歡涓湁鏁堬紝
涓嶈兘extern鍒板埆鐨勬枃浠剁敤錛屽湪鍑芥暟浣撳唴瀹氫箟鐨剆tatic琛ㄧず鍙湪璇ュ嚱鏁頒綋鍐呮湁鏁堛傚彟澶栵紝
鍑芥暟涓殑"adgfdf"榪欐牱鐨勫瓧絎︿覆瀛樻斁鍦ㄥ父閲忓尯銆?
姣斿錛?
int a = 0; 鍏ㄥ眬鍒濆鍖栧尯
char *p1; 鍏ㄥ眬鏈垵濮嬪寲鍖?
main()
{
int b; 鏍?
char s[] = "abc";鏍?
char *p2; 鏍?
char *p3 = "123456"; 123456\0鍦ㄥ父閲忓尯錛宲3鍦ㄦ爤涓娿?
static int c =0錛?鍏ㄥ眬錛堥潤鎬侊級鍒濆鍖栧尯
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
鍒嗛厤寰楁潵寰?0鍜?0瀛楄妭鐨勫尯鍩熷氨鍦ㄥ爢鍖恒?
strcpy(p1, "123456"); 123456\0鏀懼湪甯擱噺鍖猴紝緙栬瘧鍣ㄥ彲鑳戒細灝嗗畠涓巔3鎵鎸囧悜鐨?12345
6"浼樺寲鎴愪竴鍧椼?
}
榪樻湁灝辨槸鍑芥暟璋冪敤鏃朵細鍦ㄦ爤涓婃湁涓緋誨垪鐨勪繚鐣欑幇鍦哄強浼犻掑弬鏁扮殑鎿嶄綔銆?
鏍堢殑絀洪棿澶у皬鏈夐檺瀹氾紝vc鐨勭己鐪佹槸2M銆傛爤涓嶅鐢ㄧ殑鎯呭喌涓鑸槸紼嬪簭涓垎閰嶄簡澶ч噺鏁扮粍鍜?
閫掑綊鍑芥暟灞傛澶繁銆傛湁涓鐐瑰繀欏葷煡閬擄紝褰撲竴涓嚱鏁拌皟鐢ㄥ畬榪斿洖鍚庡畠浼氶噴鏀捐鍑芥暟涓墍鏈?
鐨勬爤絀洪棿銆傛爤鏄敱緙栬瘧鍣ㄨ嚜鍔ㄧ鐞嗙殑錛屼笉鐢ㄤ綘鎿嶅績銆?
鍫嗘槸鍔ㄦ佸垎閰嶅唴瀛樼殑錛屽茍涓斾綘鍙互鍒嗛厤浣跨敤寰堝ぇ鐨勫唴瀛樸備絾鏄敤涓嶅ソ浼氫駭鐢熷唴瀛樻硠婕忋?
騫朵笖棰戠箒鍦癿alloc鍜宖ree浼氫駭鐢熷唴瀛樼鐗囷紙鏈夌偣綾諱技紓佺洏紕庣墖錛夛紝鍥犱負c鍒嗛厤鍔ㄦ佸唴瀛樻椂
鏄鎵懼尮閰嶇殑鍐呭瓨鐨勩傝岀敤鏍堝垯涓嶄細浜х敓紕庣墖銆?
鍦ㄦ爤涓婂瓨鍙栨暟鎹瘮閫氳繃鎸囬拡鍦ㄥ爢涓婂瓨鍙栨暟鎹揩浜涖?
涓鑸ぇ瀹惰鐨勫爢鏍堝拰鏍堟槸涓鏍風殑錛屽氨鏄爤(stack)錛岃岃鍫嗘椂鎵嶆槸鍫唄eap.
鏍堟槸鍏堝叆鍚庡嚭鐨勶紝涓鑸槸鐢遍珮鍦板潃鍚戜綆鍦板潃鐢熼暱銆?


鍫?heap)鍜屾爤(stack)鏄疌/C++緙栫▼涓嶅彲閬垮厤浼氱鍒扮殑涓や釜鍩烘湰姒傚康銆?br />棣栧厛錛岃繖涓や釜姒傚康閮藉彲浠ュ湪璁叉暟鎹粨鏋勭殑涔︿腑鎵懼埌錛屼粬浠兘鏄熀鏈殑鏁版嵁緇撴瀯錛岃櫧鐒舵爤鏇翠負綆鍗曚竴浜涖傚湪鍏蜂綋鐨凜/C++緙栫▼妗嗘灦涓紝榪欎袱涓蹇靛茍涓嶆槸騫惰鐨勩傚搴曞眰鏈哄櫒浠g爜鐨勭爺絀跺彲浠ユ彮紺猴紝鏍堟槸鏈哄櫒緋葷粺鎻愪緵鐨勬暟鎹粨鏋勶紝鑰屽爢鍒欐槸C/C++鍑芥暟搴撴彁渚涚殑銆?鍏蜂綋鍦拌錛岀幇浠h綆楁満(涓茶鎵ц鏈哄埗)錛岄兘鐩存帴鍦ㄤ唬鐮佸簳灞傛敮鎸佹爤鐨勬暟鎹粨鏋勩傝繖浣撶幇鍦紝鏈変笓闂ㄧ殑瀵勫瓨鍣ㄦ寚鍚戞爤鎵鍦ㄧ殑鍦板潃錛屾湁涓撻棬鐨勬満鍣ㄦ寚浠ゅ畬鎴愭暟鎹叆鏍堝嚭鏍堢殑鎿嶄綔銆? 榪欑鏈哄埗鐨勭壒鐐規槸鏁堢巼楂橈紝鏀寔鐨勬暟鎹湁闄愶紝涓鑸槸鏁存暟錛屾寚閽堬紝嫻偣鏁扮瓑緋葷粺鐩存帴鏀?鎸佺殑鏁版嵁綾誨瀷錛屽茍涓嶇洿鎺ユ敮鎸佸叾浠栫殑鏁版嵁緇撴瀯銆傚洜涓烘爤鐨勮繖縐嶇壒鐐癸紝瀵規爤鐨勪嬌鐢ㄥ湪紼嬪簭涓槸闈炲父棰戠箒鐨勩傚瀛愮▼搴忕殑璋冪敤灝辨槸鐩存帴鍒╃敤鏍堝畬鎴愮殑銆傛満鍣ㄧ殑call鎸囦護閲岄殣鍚簡鎶婅繑鍥炲湴鍧鎺ㄥ叆鏍堬紝鐒跺悗璺寵漿鑷沖瓙紼嬪簭鍦板潃鐨勬搷浣滐紝鑰屽瓙紼嬪簭涓殑ret鎸囦護鍒欓殣鍚粠鍫嗘爤涓脊鍑鴻繑鍥炲湴鍧騫惰煩杞箣鐨勬搷浣溿侰/C++涓殑鑷姩鍙橀噺鏄洿鎺ュ埄鐢ㄦ爤鐨勪緥瀛愶紝榪欎篃灝辨槸涓轟粈涔堝綋鍑芥暟榪斿洖鏃訛紝璇ュ嚱鏁扮殑鑷姩鍙橀噺鑷姩澶辨晥鐨勫師鍥?鍥犱負 棰滄崲鎸囨埑璇撮浠殫 鐘舵?銆? 鍜屾爤涓嶅悓錛屽爢鐨勬暟鎹粨鏋勫茍涓嶆槸鐢辯郴緇?鏃犺鏄満鍣ㄧ郴緇熻繕鏄搷浣滅郴緇?鏀寔鐨勶紝鑰屾槸鐢卞嚱鏁板簱鎻愪緵鐨勩傚熀鏈殑malloc/realloc/free鍑芥暟緇存姢浜嗕竴濂楀唴閮ㄧ殑鍫嗘暟鎹粨鏋勩傚綋紼嬪簭浣跨敤榪欎簺鍑芥暟鍘昏幏寰楁柊鐨勫唴瀛樼┖闂存椂錛岃繖濂楀嚱鏁伴鍏堣瘯鍥句粠鍐呴儴鍫嗕腑瀵繪壘鍙敤鐨勫唴瀛樼┖闂達紝濡傛灉娌℃湁鍙互浣跨敤鐨勫唴瀛樼┖闂達紝鍒欒瘯鍥懼埄鐢ㄧ郴緇熻皟鐢ㄦ潵鍔ㄦ佸鍔犵▼搴忔暟鎹鐨勫唴瀛樺ぇ灝忥紝鏂板垎閰嶅緱鍒扮殑絀洪棿棣栧厛琚粍緇囪繘鍐呴儴鍫嗕腑鍘伙紝鐒跺悗鍐嶄互閫傚綋鐨勫艦寮忚繑鍥炵粰璋冪敤鑰呫傚綋紼嬪簭閲婃斁鍒嗛厤鐨勫唴瀛樼┖闂存椂錛岃繖鐗囧唴瀛樼┖闂磋榪斿洖鍐呴儴鍫嗙粨鏋勪腑錛屽彲鑳戒細琚傚綋鐨勫鐞?姣斿鍜屽叾浠栫┖闂茬┖闂村悎騫舵垚鏇村ぇ鐨勭┖闂茬┖闂?錛屼互鏇撮傚悎涓嬩竴嬈″唴瀛樺垎閰嶇敵璇楓?br />榪欏澶嶆潅鐨勫垎閰嶆満鍒跺疄闄呬笂鐩稿綋浜庝竴涓唴瀛樺垎閰嶇殑緙撳啿姹?Cache)錛屼嬌鐢ㄨ繖濂楁満鍒舵湁濡備笅鑻ュ共鍘熷洜錛?
1. 緋葷粺璋冪敤鍙兘涓嶆敮鎸佷換鎰忓ぇ灝忕殑鍐呭瓨鍒嗛厤銆傛湁浜涚郴緇熺殑緋葷粺璋冪敤鍙敮鎸佸浐瀹氬ぇ灝忓強鍏跺嶆暟鐨勫唴瀛樿姹?鎸夐〉鍒嗛厤)錛涜繖鏍風殑璇濆浜庡ぇ閲忕殑灝忓唴瀛樺垎綾繪潵璇翠細閫犳垚嫻垂銆?br />2. 緋葷粺璋冪敤鐢寵鍐呭瓨鍙兘鏄唬浠鋒槀璐電殑銆傜郴緇熻皟鐢ㄥ彲鑳芥秹鍙婄敤鎴鋒佸拰鏍稿績鎬佺殑杞崲銆?
3. 娌℃湁綆$悊鐨勫唴瀛樺垎閰嶅湪澶ч噺澶嶆潅鍐呭瓨鐨勫垎閰嶉噴鏀炬搷浣滀笅寰堝鏄撻犳垚鍐呭瓨紕庣墖銆?

鍫嗗拰鏍堢殑瀵規瘮 浠庝互涓婄煡璇嗗彲鐭ワ紝鏍堟槸緋葷粺鎻愪緵鐨勫姛鑳斤紝鐗圭偣鏄揩閫熼珮鏁堬紝緙虹偣鏄湁闄愬埗錛屾暟鎹笉鐏墊椿錛涜屾爤鏄嚱鏁板簱鎻愪緵鐨勫姛鑳斤紝鐗圭偣鏄伒媧繪柟渚匡紝鏁版嵁閫傚簲闈㈠箍娉涳紝浣嗘槸鏁堢巼鏈変竴瀹氶檷浣庛傛爤鏄郴緇熸暟鎹粨鏋勶紝瀵逛簬榪涚▼/綰跨▼鏄敮涓鐨勶紱鍫嗘槸鍑芥暟搴撳唴閮ㄦ暟鎹粨鏋勶紝涓嶄竴瀹氬敮涓銆備笉鍚屽爢鍒嗛厤鐨勫唴瀛樻棤娉曚簰鐩告搷浣溿傛爤絀洪棿鍒嗛潤鎬佸垎閰嶅拰鍔ㄦ佸垎閰嶄袱縐嶃傞潤鎬佸垎閰嶆槸緙栬瘧鍣ㄥ畬鎴愮殑錛屾瘮濡傝嚜鍔ㄥ彉閲?auto)鐨勫垎閰嶃傚姩鎬佸垎閰嶇敱alloca鍑芥暟瀹屾垚銆傛爤鐨勫姩鎬佸垎閰嶆棤闇閲婃斁(鏄嚜鍔ㄧ殑)錛屼篃灝辨病鏈夐噴鏀懼嚱鏁般備負鍙Щ妞嶇殑紼嬪簭璧瘋錛屾爤鐨勫姩鎬佸垎閰嶆搷浣滄槸涓嶈榧撳姳鐨勶紒鍫嗙┖闂寸殑鍒嗛厤鎬繪槸鍔ㄦ佺殑錛岃櫧鐒剁▼搴忕粨鏉熸椂鎵鏈夌殑鏁版嵁絀洪棿閮戒細琚噴鏀懼洖緋葷粺錛屼絾鏄簿紜殑鐢寵鍐呭瓨/閲婃斁鍐呭瓨鍖歸厤鏄壇濂界▼搴忕殑鍩烘湰瑕佺礌銆?
鎵浠ヨ綆楁満涓殑鍫嗗拰鏍堢粡甯告椂鏀句竴鍧楄鐨?
nod 涓鑸笉鏄繀瑕佸氨涓嶈鍔ㄦ佸垱寤猴紝鏈璁ㄥ帉鎶妌ew鍑烘潵鐨勪笢瑗垮綋灞閮ㄥ彉閲忕敤錛?br />鐢ㄤ竾浜嗛┈涓奷elete 鐨勫仛娉?

聽鐞嗙敱
聽1.鏍堝垎閰嶆瘮鍫嗗揩錛屽彧闇瑕佷竴鏉℃寚浠ゅ氨鍛㈢粰閰嶆墍鏈夌殑灞閮ㄥ彉閲?
2.鏍堜笉浼氬嚭鐜板唴瀛樼鐗?
3銆傛爤瀵硅薄濂界鐞?

褰撶劧錛屾煇浜涙儏鍐典笅涔熻閭d箞鍐?姣斿
1.瀵硅薄寰堝ぇ
2.瀵硅薄闇瑕佸湪鏌愪釜鐗瑰畾鐨勬椂鍒繪瀯閫犳垨鏋愬
3.綾誨彧鍏佽瀵硅薄鍔ㄦ佸垱寤?姣斿VCL鐨勫ぇ澶氭暟綾? 褰撶劧錛屽繀欏葷敤鍫嗗璞℃椂涔熶笉鑳借翰閬?br />聽
http://kb.csdn.net/.net/Articles/200605/80f93200-6a0c-4e21-82d8-4212844da589.html

erran 2007-10-13 21:12 鍙戣〃璇勮
]]>
C++涓垚鍛樺嚱鏁扮殑閲嶈澆銆佽鐩栦笌闅愯棌http://m.shnenglu.com/erran/archive/2007/10/13/34128.htmlerranerranSat, 13 Oct 2007 09:52:00 GMThttp://m.shnenglu.com/erran/archive/2007/10/13/34128.htmlhttp://m.shnenglu.com/erran/comments/34128.htmlhttp://m.shnenglu.com/erran/archive/2007/10/13/34128.html#Feedback0http://m.shnenglu.com/erran/comments/commentRss/34128.htmlhttp://m.shnenglu.com/erran/services/trackbacks/34128.html
   
鎴愬憳鍑芥暟鐨勯噸杞姐佽鐩栵紙override錛変笌闅愯棌寰堝鏄撴販娣嗭紝C++紼嬪簭鍛樺繀欏昏鎼炴竻妤氭蹇碉紝鍚﹀垯閿欒灝嗛槻涓嶈儨闃層?span>

 

 

8.2.1 閲嶈澆涓庤鐩?span>

    鎴愬憳鍑芥暟琚噸杞界殑鐗瑰緛錛?span>

錛?span>1錛夌浉鍚岀殑鑼冨洿錛堝湪鍚屼竴涓被涓級錛?span>

錛?span>2錛夊嚱鏁板悕瀛楃浉鍚岋紱

錛?span>3錛夊弬鏁頒笉鍚岋紱

錛?span>4錛?span>virtual鍏抽敭瀛楀彲鏈夊彲鏃犮?/span>

    瑕嗙洊鏄寚媧劇敓綾誨嚱鏁拌鐩栧熀綾誨嚱鏁幫紝鐗瑰緛鏄細

錛?span>1錛変笉鍚岀殑鑼冨洿錛堝垎鍒綅浜庢淳鐢熺被涓庡熀綾伙級錛?span>

錛?span>2錛夊嚱鏁板悕瀛楃浉鍚岋紱

錛?span>3錛夊弬鏁扮浉鍚岋紱

錛?span>4錛夊熀綾誨嚱鏁板繀欏繪湁virtual鍏抽敭瀛椼?span>

    紺轟緥8-2-1涓紝鍑芥暟Base::f(int)涓?span>Base::f(float)鐩鎬簰閲嶈澆錛岃?span>Base::g(void)琚?span>Derived::g(void)瑕嗙洊銆?span>

 

 

#include <iostream.h>

    class Base

{

public:

             void f(int x){ cout << "Base::f(int) " << x << endl; }

void f(float x){ cout << "Base::f(float) " << x << endl; }

     virtual void g(void){ cout << "Base::g(void)" << endl;}

};

 

 

    class Derived : public Base

{

public:

     virtual void g(void){ cout << "Derived::g(void)" << endl;}

};

 

 

    void main(void)

    {

     Derived d;

     Base *pb = &d;

     pb->f(42);        // Base::f(int) 42

     pb->f(3.14f);     // Base::f(float) 3.14

     pb->g();          // Derived::g(void)

}

紺轟緥8-2-1鎴愬憳鍑芥暟鐨勯噸杞藉拰瑕嗙洊

   

8.2.2 浠や漢榪鋒儜鐨勯殣钘忚鍒?/span>

    鏈潵浠呬粎鍖哄埆閲嶈澆涓庤鐩栧茍涓嶇畻鍥伴毦錛屼絾鏄?span>C++鐨勯殣钘忚鍒欎嬌闂澶嶆潅鎬ч櫋鐒跺鍔犮傝繖閲?#8220;闅愯棌”鏄寚媧劇敓綾葷殑鍑芥暟灞忚斀浜嗕笌鍏跺悓鍚嶇殑鍩虹被鍑芥暟錛岃鍒欏涓嬶細

錛?span>1錛夊鏋滄淳鐢熺被鐨勫嚱鏁頒笌鍩虹被鐨勫嚱鏁板悓鍚嶏紝浣嗘槸鍙傛暟涓嶅悓銆傛鏃訛紝涓嶈鏈夋棤virtual鍏抽敭瀛楋紝鍩虹被鐨勫嚱鏁板皢琚殣钘忥紙娉ㄦ剰鍒笌閲嶈澆娣鋒穯錛夈?span>

錛?span>2錛夊鏋滄淳鐢熺被鐨勫嚱鏁頒笌鍩虹被鐨勫嚱鏁板悓鍚嶏紝騫朵笖鍙傛暟涔熺浉鍚岋紝浣嗘槸鍩虹被鍑芥暟娌℃湁virtual鍏抽敭瀛椼傛鏃訛紝鍩虹被鐨勫嚱鏁拌闅愯棌錛堟敞鎰忓埆涓庤鐩栨販娣嗭級銆?/span>

    紺轟緥紼嬪簭8-2-2錛?span>a錛変腑錛?span>

錛?span>1錛夊嚱鏁?span>Derived::f(float)瑕嗙洊浜?span>Base::f(float)銆?span>

錛?span>2錛夊嚱鏁?span>Derived::g(int)闅愯棌浜?span>Base::g(float)錛岃屼笉鏄噸杞姐?span>

錛?span>3錛夊嚱鏁?span>Derived::h(float)闅愯棌浜?span>Base::h(float)錛岃屼笉鏄鐩栥?span>

 

 

#include <iostream.h>

    class Base

{

public:

    virtual void f(float x){ cout << "Base::f(float) " << x << endl; }

void g(float x){ cout << "Base::g(float) " << x << endl; }

            void h(float x){ cout << "Base::h(float) " << x << endl; }

};

    class Derived : public Base

{

public:

    virtual void f(float x){ cout << "Derived::f(float) " << x << endl; }

void g(int x){ cout << "Derived::g(int) " << x << endl; }

            void h(float x){ cout << "Derived::h(float) " << x << endl; }

};

紺轟緥8-2-2錛?span>a錛夋垚鍛樺嚱鏁扮殑閲嶈澆銆佽鐩栧拰闅愯棌

 

 

    鎹綔鑰呰冨療錛屽緢澶?span>C++紼嬪簭鍛樻病鏈夋剰璇嗗埌鏈?#8220;闅愯棌”榪欏洖浜嬨傜敱浜庤璇嗕笉澶熸繁鍒伙紝“闅愯棌”鐨勫彂鐢熷彲璋撶鍑洪娌★紝甯稿父浜х敓浠や漢榪鋒儜鐨勭粨鏋溿?span>

紺轟緥8-2-2錛?span>b錛変腑錛?span>pb鍜?span>pd鎸囧悜鍚屼竴鍦板潃錛屾寜鐞嗚榪愯緇撴灉搴旇鏄浉鍚岀殑錛屽彲浜嬪疄騫墮潪榪欐牱銆?span>

 

 

void main(void)

{

Derived d;

Base *pb = &d;

Derived *pd = &d;

// Good : behavior depends solely on type of the object

pb->f(3.14f); // Derived::f(float) 3.14

pd->f(3.14f); // Derived::f(float) 3.14

 

 

// Bad : behavior depends on type of the pointer

pb->g(3.14f); // Base::g(float) 3.14

pd->g(3.14f); // Derived::g(int) 3        (surprise!)

 

 

// Bad : behavior depends on type of the pointer

pb->h(3.14f); // Base::h(float) 3.14      (surprise!)

pd->h(3.14f); // Derived::h(float) 3.14

}

紺轟緥8-2-2錛?span>b錛?閲嶈澆銆佽鐩栧拰闅愯棌鐨勬瘮杈?/span>

8.2.3 鎽嗚劚闅愯棌

    闅愯棌瑙勫垯寮曡搗浜嗕笉灝戦夯鐑︺傜ず渚?chsdate w:st="on" isrocdate="False" islunardate="False" day="3" month="2" year="2008">8-2-3紼嬪簭涓紝璇彞pd->f(10)鐨勬湰鎰忔槸鎯寵皟鐢ㄥ嚱鏁?span>Base::f(int)錛屼絾鏄?span>Base::f(int)涓嶅垢琚?span>Derived::f(char *)闅愯棌浜嗐傜敱浜庢暟瀛?span>10涓嶈兘琚殣寮忓湴杞寲涓哄瓧絎︿覆錛屾墍浠ュ湪緙栬瘧鏃跺嚭閿欍?span>

 

 

class Base

{

public:

void f(int x);

};

class Derived : public Base

{

public:

void f(char *str);

};

void Test(void)

{

Derived *pd = new Derived;

pd->f(10);    // error

}

紺轟緥8-2-3 鐢變簬闅愯棌鑰屽鑷撮敊璇?/span>

 

 

    浠庣ず渚?chsdate w:st="on" isrocdate="False" islunardate="False" day="3" month="2" year="2008">8-2-3鐪嬫潵錛岄殣钘忚鍒欎技涔庡緢鎰氳牏銆備絾鏄殣钘忚鍒欒嚦灝戞湁涓や釜瀛樺湪鐨勭悊鐢憋細

u       鍐欒鍙?span>pd->f(10)鐨勪漢鍙兘鐪熺殑鎯寵皟鐢?span>Derived::f(char *)鍑芥暟錛屽彧鏄粬璇皢鍙傛暟鍐欓敊浜嗐傛湁浜嗛殣钘忚鍒欙紝緙栬瘧鍣ㄥ氨鍙互鏄庣‘鎸囧嚭閿欒錛岃繖鏈繀涓嶆槸濂戒簨銆傚惁鍒欙紝緙栬瘧鍣ㄤ細闈欐倓鎮勫湴灝嗛敊灝遍敊錛岀▼搴忓憳灝嗗緢闅懼彂鐜拌繖涓敊璇紝嫻佷笅紲告牴銆?span>

u       鍋囧綾?span>Derived鏈夊涓熀綾伙紙澶氶噸緇ф壙錛夛紝鏈夋椂鎼炰笉娓呮鍝簺鍩虹被瀹氫箟浜嗗嚱鏁?span>f銆傚鏋滄病鏈夐殣钘忚鍒欙紝閭d箞pd->f(10)鍙兘浼氳皟鐢ㄤ竴涓嚭涔庢剰鏂欑殑鍩虹被鍑芥暟f銆傚敖綆¢殣钘忚鍒欑湅璧鋒潵涓嶆庝箞鏈夐亾鐞嗭紝浣嗗畠鐨勭‘鑳芥秷鐏繖浜涙剰澶栥?span>

 

 

紺轟緥8-2-3涓紝濡傛灉璇彞pd->f(10)涓瀹氳璋冪敤鍑芥暟Base::f(int)錛岄偅涔堝皢綾?span>Derived淇敼涓哄涓嬪嵆鍙?span>

class Derived : public Base

{

public:

void f(char *str);

void f(int x) { Base::f(x); }

};



erran 2007-10-13 17:52 鍙戣〃璇勮
]]>
杞細C++綾誨簱浠嬬粛http://m.shnenglu.com/erran/archive/2007/10/13/34119.htmlerranerranSat, 13 Oct 2007 08:42:00 GMThttp://m.shnenglu.com/erran/archive/2007/10/13/34119.htmlhttp://m.shnenglu.com/erran/comments/34119.htmlhttp://m.shnenglu.com/erran/archive/2007/10/13/34119.html#Feedback1http://m.shnenglu.com/erran/comments/commentRss/34119.htmlhttp://m.shnenglu.com/erran/services/trackbacks/34119.html鍘熸枃錛?a >http://hi.baidu.com/chplj/blog/item/08d8f6368def16310a55a931.html
浣滆咃細

C++綾誨簱浠嬬粛


鍐嶆浣撶幇浜咰++淇濇寔鏍稿績璇█鐨勬晥鐜囧悓鏃跺ぇ鍔涘彂灞曞簲鐢ㄥ簱鐨勫彂灞曡秼鍔?!鍦–++涓紝搴撶殑鍦頒綅鏄潪甯擱珮鐨勩侰++涔嬬埗聽Bjarne聽Stroustrup鍏堢敓澶氭琛ㄧず浜嗚璁″簱鏉ユ墿鍏呭姛鑳借濂借繃璁捐鏇村鐨勮娉曠殑璦璁恒傜幇瀹炰腑錛孋++鐨勫簱闂ㄧ被綣佸錛岃В鍐崇殑闂涔熸槸鏋佸叾騫挎硾錛屽簱浠庤交閲忕駭鍒伴噸閲忕駭鐨勯兘鏈夈備笉灝戦兘鏄浜虹溂鐣屽ぇ寮錛屼害鎴栨槸鏈涜岀敓鍙圭殑鎬濈淮鏉頒綔銆傜敱浜庡簱鐨勬暟閲忛潪甯稿簽澶э紝鑰屼笖闄愪簬絎旇呮按騫籌紝鍏朵腑寰堝騫朵笉浜嗚В銆傛墍浠ユ枃涓墍鎻愮殑涓浜涘簱閮芥槸姣旇緝钁楀悕鐨勫ぇ鍨嬪簱銆偮?/p>

鏍囧噯搴撀?/strong>

鏍囧噯搴撲腑鎻愪緵浜咰++紼嬪簭鐨勫熀鏈鏂姐傝櫧鐒禖++鏍囧噯搴撻殢鐫C++鏍囧噯鎶樿吘浜嗚澶氬勾錛岀洿鍒版爣鍑嗙殑鍑哄彴鎵嶆寮忓畾鍨嬶紝浣嗘槸鍦ㄦ爣鍑嗗簱鐨勫疄鐜頒笂鍗村緢浠や漢嬈f叞寰楃湅鍒板縐嶅疄鐜幫紝騫朵笖宸茶瀹炶返璇佹槑涓烘湁宸ヤ笟綰у埆寮哄害鐨勪匠浣溿偮?/p>

1銆伮燚inkumware聽C++聽Library聽

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

P.J.聽Plauger緙栧啓鐨勯珮鍝佽川鐨勬爣鍑嗗簱銆侾.J.聽Plauger鍗氬+鏄疍r.聽Dobb's紼嬪簭璁捐鏉板嚭濂栫殑鑾峰緱鑰呫傚叾緙栧啓鐨勫簱闀挎湡琚玀icrosoft閲囩敤錛屽茍涓旀渶榪態orland涔熷彇寰椾簡鍏禣EM鐨刲icense錛屽湪鍏禖/C+聽+鐨勪駭鍝佷腑閲囩敤Dinkumware鐨勫簱銆偮?/p>

2銆伮燫ogueWave聽Standard聽C++聽Library聽

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

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

3銆丼GI聽STL聽

鍙傝冪珯鐐癸細http://www.roguewave.com/
銆SGI鍏徃鐨凜++鏍囧噯妯$増搴撱偮?/p>

4銆丼TLport聽

鍙傝冪珯鐐癸細http://www.stlport.org/
銆SGI聽STL搴撶殑璺ㄥ鉤鍙板彲縐繪鐗堟湰銆偮?/p>

鍑嗘爣鍑嗗簱鈥斺擝oost聽

Boost聽搴撴槸涓涓粡榪囧崈閿ょ櫨鐐箋佸彲縐繪銆佹彁渚涙簮浠g爜鐨凜++搴擄紝浣滀負鏍囧噯搴撶殑鍚庡錛屾槸C++鏍囧噯鍖栬繘紼嬬殑鍙戝姩鏈轟箣涓銆偮燘oost搴撶敱C++鏍囧噯濮斿憳浼氬簱宸ヤ綔緇勬垚鍛樺彂璧鳳紝鍦–++紺懼尯涓獎鍝嶇敋澶э紝鍏舵垚鍛樺凡榪?000浜恒偮燘oost搴撲負鎴戜滑甯︽潵浜嗘渶鏂般佹渶閰楓佹渶瀹炵敤鐨勬妧鏈紝鏄笉鎶樹笉鎵g殑"鍑?鏍囧噯搴撱偮?/p>

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

銆Regex聽
銆姝e垯琛ㄨ揪寮忓簱聽

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

Graph聽
銆鍥劇粍浠跺拰綆楁硶聽

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

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

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

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

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

Pool聽
銆鍐呭瓨姹犵鐞喡?/p>

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

Smart聽Pointers聽in聽Boost,鍝︼紝榪欑瘒鏂囩珷鍙互鏌ュ埌錛孋UJ鏄彁渚涘湪綰挎祻瑙堢殑銆備腑鏂囩増瑙佺瑪鑰呭湪銆奃r.聽Dobb's聽Journal杞歡鐮斿彂鏉傚織銆嬬7杈戜笂鐨勮瘧鏂囥偮?/p>

Boost聽鎬諱綋鏉ヨ鏄疄鐢ㄤ環鍊煎緢楂橈紝璐ㄩ噺寰堥珮鐨勫簱銆傚茍涓旂敱浜庡叾瀵硅法騫沖彴鐨勫己璋冿紝瀵規爣鍑咰++鐨勫己璋冿紝鏄紪鍐欏鉤鍙版棤鍏籌紝鐜頒唬C++鐨勫紑鍙戣呭繀澶囩殑宸ュ叿銆備絾鏄疊oost聽涓篃鏈夊緢澶氭槸瀹為獙鎬ц川鐨勪笢瑗匡紝鍦ㄥ疄闄呯殑寮鍙戜腑瀹炵敤闇瑕佽皚鎱庛傚茍涓斿緢澶欱oost涓殑搴撳姛鑳藉牚縐板璇█鍔熻兘鐨勬墿灞曪紝鍏舵瀯閫犵敤灝界簿宸х殑鎵嬫硶錛屼笉瑕佽錘鐒剁殑鑺辮垂鏃墮棿鐮旇銆侭oost鍙﹀涓闈紝姣斿Graph榪欐牱鐨勫簱鍒欐槸鍏鋒湁宸ヤ笟寮哄害錛岀粨鏋勮壇濂斤紝闈炲父鍊煎緱鐮旇鐨勭簿鍝佷唬鐮侊紝騫朵笖涔熷彲浠ユ斁蹇冪殑鍦ㄤ駭鍝佷唬鐮佷腑澶氬鍒╃敤銆偮?/p>

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

GUI聽

鍦ㄤ紬澶欳++鐨勫簱涓紝GUI閮ㄥ垎鐨勫簱綆楁槸姣旇緝綣佽崳錛屼篃姣旇緝寮曚漢娉ㄧ洰鐨勩傚湪瀹為檯寮鍙戜腑錛孏UI搴撶殑閫夋嫨涔熸槸闈炲父閲嶈鐨勪竴浠朵簨鎯咃紝涓嬮潰鎴戜滑緇艱堪涓涓嬪彲閫夋嫨鐨凣UI搴擄紝鍚勮嚜鐨勭壒鐐逛互鍙婄浉鍏沖伐鍏風殑鏀寔銆偮?/p>

1銆伮燤FC聽

澶у悕榧庨紟鐨勫井杞熀紜綾誨簱錛圡icrosoft聽Foundation聽Class錛夈傚ぇ鍑″榪嘨C++鐨勪漢閮藉簲璇ョ煡閬撹繖涓簱銆傝櫧鐒朵粠鎶鏈搴﹁錛孧FC鏄笉澶ф紓浜殑錛屼絾鏄畠鏋勫緩浜嶹indows聽API聽涔嬩笂錛岃兘澶熶嬌紼嬪簭鍛樼殑宸ヤ綔鏇村鏄?緙栫▼鏁堢巼楂橈紝鍑忓皯浜嗗ぇ閲忓湪寤虹珛聽Windows聽紼嬪簭鏃跺繀欏葷紪鍐欑殑浠g爜錛屽悓鏃跺畠榪樻彁渚涗簡鎵鏈変竴鑸燙++聽緙栫▼鐨勪紭鐐癸紝渚嬪緇ф壙鍜屽皝瑁呫侻FC聽緙栧啓鐨勭▼搴忓湪鍚勪釜鐗堟湰鐨刉indows鎿嶄綔緋葷粺涓婃槸鍙Щ妞嶇殑錛屼緥濡傦紝鍦燱indows聽3.1涓嬬紪鍐欑殑浠g爜鍙互寰堝鏄撳湴縐繪鍒奧燱indows聽NT聽鎴柭燱indows聽95聽涓娿備絾鏄湪鏈榪戝彂灞曚互鍙婂畼鏂規敮鎸佷笂鏃ユ笎鍔垮井銆偮?/p>

2銆伮燪T聽

鍙傝冪綉绔欙細http://www.trolltech.com
Qt聽鏄疶rolltech鍏徃鐨勪竴涓騫沖彴鐨凜++鍥懼艦鐢ㄦ埛鐣岄潰搴旂敤紼嬪簭妗嗘灦銆傚畠鎻愪緵緇欏簲鐢ㄧ▼搴忓紑鍙戣呭緩绔嬭壓鏈駭鐨勫浘褰㈢敤鎴風晫闈㈡墍闇鐨勬墍鐢ㄥ姛鑳姐俀t鏄畬鍏ㄩ潰鍚戝璞$殑寰堝鏄撴墿灞曪紝騫朵笖鍏佽鐪熸鍦扮粍浠剁紪紼嬨傝嚜浠?996騫存棭浜涙椂鍊欙紝Qt榪涘叆鍟嗕笟棰嗗煙錛屽畠宸茬粡鎴愪負鍏ㄤ笘鐣岃寖鍥村唴鏁板崈縐嶆垚鍔熺殑搴旂敤紼嬪簭鐨勫熀紜銆俀t涔熸槸嫻佽鐨凩inux妗岄潰鐜KDE聽鐨勫熀紜錛屽悓鏃跺畠榪樻敮鎸乄indows銆丮acintosh銆乁nix/X11絳夊縐嶅鉤鍙般偮?/p>

3銆乄xWindows聽

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

璺ㄥ鉤鍙扮殑GUI搴撱傚洜涓哄叾綾誨眰嬈℃瀬鍍廙FC錛屾墍浠ユ湁鏂囩珷浠嬬粛浠嶮FC鍒癢xWindows鐨勪唬鐮佺Щ妞嶄互瀹炵幇璺ㄥ鉤鍙扮殑鍔熻兘銆傞氳繃澶氬勾鐨勫紑鍙戜篃鏄竴涓棩瓚嬪畬鍠勭殑聽GUI搴擄紝鏀寔鍚屾牱涓嶅急浜庡墠闈袱涓簱銆傚茍涓旀槸瀹屽叏寮鏀炬簮浠g爜鐨勩傛柊榪戠殑C++聽Builder聽X鐨凣UI璁捐鍣ㄥ氨鏄熀浜庤繖涓簱鐨勩偮?/p>

4銆丗ox聽

寮鏀炬簮浠g爜鐨凣UI搴撱備綔鑰呬粠鑷繁浜茶韓鐨勫紑鍙戠粡楠屼腑寰楀嚭浜嗕竴涓悊鎯崇殑GUI搴撳簲璇ユ槸浠涔堟牱瀛愮殑鎰熷彈鍑哄彂錛屼粠鑰屽紑濮嬩簡瀵硅繖涓簱鐨勫紑鍙戙傛湁鍏磋叮鐨勫彲浠ュ皾璇曚竴涓嬨偮?/p>

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

5銆伮燱TL聽

鍩轟簬ATL鐨勪竴涓簱銆傚洜涓轟嬌鐢ㄤ簡澶ч噺ATL鐨勮交閲忕駭鎵嬫硶錛屾ā鏉跨瓑鎶鏈紝鍦ㄤ唬鐮佸昂瀵革紝浠ュ強閫熷害浼樺寲鏂歸潰鍋氬緱闈炲父鍒頒綅銆備富瑕侀潰鍚戠殑浣跨敤緹や綋鏄紑鍙慍OM杞婚噺綰т緵緗戠粶涓嬭澆鐨勫彲瑙嗗寲鎺т歡鐨勫紑鍙戣呫偮?/p>

6銆伮燝TK聽

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

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

緗戠粶閫氫俊搴?/p>

ACE聽

鍙傝冪綉绔欙細http://www.cs.wustl.edu/~schmidt/ACE.html聽
銆ACE緗戠粶緙栫▼寮鍙戣鍧涳細http://www.acejoy.com

C+聽+搴撶殑浠h〃錛岃秴閲嶉噺綰х殑緗戠粶閫氫俊寮鍙戞鏋躲侫CE鑷傞厤閫氫俊鐜錛圓daptive聽Communication聽Environment錛夋槸鍙互鑷敱浣跨敤銆佸紑鏀炬簮浠g爜鐨勯潰鍚戝璞℃鏋訛紝鍦ㄥ叾涓疄鐜頒簡璁稿鐢ㄤ簬騫跺彂閫氫俊杞歡鐨勬牳蹇冩ā寮忋侫CE鎻愪緵浜嗕竴緇勪赴瀵岀殑鍙鐢–++聽鍖呰澶栬錛圵rapper聽Facade錛夊拰妗嗘灦緇勪歡錛屽彲璺ㄨ秺澶氱騫沖彴瀹屾垚閫氱敤鐨勯氫俊杞歡浠誨姟錛屽叾涓寘鎷細浜嬩歡澶氳礬鍒嗙鍜屼簨浠跺鐞嗗櫒鍒嗘淳銆佷俊鍙峰鐞嗐佹湇鍔″垵濮嬪寲銆佽繘紼嬮棿閫氫俊銆佸叡浜唴瀛樼鐞嗐佹秷鎭礬鐢便佸垎甯冨紡鏈嶅姟鍔ㄦ侊紙閲嶏級閰嶇疆銆佸茍鍙戞墽琛屽拰鍚屾錛岀瓑絳夈偮?/p>

StreamModule聽

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

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

SimpleSocket聽

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

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

A聽Stream聽Socket聽API聽for聽C++聽

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

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

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聽鐨勫熀鏈畬鏁寸殑寮鏀炬爣鍑嗐偮?/p>

XMLBooster聽

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

榪欎釜搴撻氳繃浜х敓鐗瑰埗鐨刾arser鐨勫姙娉曟瀬澶х殑鎻愰珮浜哫ML瑙f瀽鐨勯熷害錛屽茍涓旇兘澶熶駭鐢熺浉搴旂殑GUI紼嬪簭鏉ヤ慨鏀硅繖涓猵arser銆傚湪DOM鍜孲AX涓ゅぇ涓籜ML瑙f瀽鍔炴硶涔嬪鎻愪緵浜嗗彟澶栦竴涓彲琛岀殑瑙e喅鏂規銆偮?/p>

Pull聽Parser聽

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

榪欎釜搴撻噰鐢╬ull鏂規硶鐨刾arser銆傚湪姣忎釜SAX鐨刾arser搴曞眰閮芥湁涓涓猵ull鐨刾arser錛岃繖涓獂pp鎶婅繖灞傛毚闇插嚭鏉ョ洿鎺ョ粰澶у浣跨敤銆傚湪瑕佸厖鍒嗚冭檻閫熷害鐨勬椂鍊欏煎緱灝濊瘯銆偮?/p>

Xalan聽

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

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

CMarkup聽

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

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

libxml++聽

http://libxmlplusplus.sourceforge.net/聽

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

縐戝璁$畻聽

Blitz++聽

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

Blitz++聽鏄竴涓珮鏁堢巼鐨勬暟鍊艱綆楀嚱鏁板簱錛屽畠鐨勮璁$洰鐨勬槸甯屾湜寤虹珛涓濂楁棦鍏峰儚C++聽涓鏍鋒柟渚匡紝鍚屾椂鍙堟瘮Fortran閫熷害鏇村揩鐨勬暟鍊艱綆楃幆澧冦傞氬父錛岀敤C++鎵鍐欏嚭鐨勬暟鍊肩▼搴忥紝姣斅燜ortran鎱?0%宸﹀彸錛屽洜姝litz++姝f槸瑕佹敼鎺夎繖涓己鐐廣傛柟娉曟槸鍒╃敤C++鐨則emplate鎶鏈紝紼嬪簭鎵ц鐢氳嚦鍙互姣擣ortran鏇村揩銆偮燘litz++鐩墠浠嶅湪鍙戝睍涓紝瀵逛簬甯歌鐨凷VD錛孎FTs錛孮MRES絳夊父瑙佺殑綰挎т唬鏁版柟娉曞茍涓嶆彁渚涳紝涓嶈繃浣跨敤鑰呭彲浠ュ緢瀹規槗鍦板埄鐢˙litz++鎵鎻愪緵鐨勫嚱鏁版潵鏋勫緩銆偮?/p>

POOMA聽

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

POOMA鏄竴涓厤璐圭殑楂樻ц兘鐨凜++搴擄紝鐢ㄤ簬澶勭悊騫惰寮忕瀛﹁綆椼侾OOMA鐨勯潰鍚戝璞¤璁℃柟渚夸簡蹇熺殑紼嬪簭寮鍙戯紝瀵瑰茍琛屾満鍣ㄨ繘琛屼簡浼樺寲浠ヨ揪鍒版渶楂樼殑鏁堢巼錛屾柟渚垮湪宸ヤ笟鍜岀爺絀剁幆澧冧腑浣跨敤銆偮?/p>

MTL聽

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

Matrix聽Template聽Library(MTL)鏄竴涓珮鎬ц兘鐨勬硾鍨嬬粍浠跺簱錛屾彁渚涗簡鍚勭鏍煎紡鐭╅樀鐨勫ぇ閲忕嚎鎬т唬鏁版柟闈㈢殑鍔熻兘銆傚湪鏌愪簺搴旂敤浣跨敤楂樻ц兘緙栬瘧鍣ㄧ殑鎯呭喌涓嬶紝姣斿Intel鐨勭紪璇戝櫒錛屼粠浜х敓鐨勬眹緙栦唬鐮佸彲浠ョ湅鍑哄叾涓庢墜鍐欏嚑涔庢病鏈変袱鏍風殑鏁堣兘銆偮?/p>

CGAL聽

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

Computational聽Geometry聽Algorithms聽Library鐨勭洰鐨勬槸鎶婂湪璁$畻鍑犱綍鏂歸潰鐨勫ぇ閮ㄥ垎閲嶈鐨勮В鍐蟲柟妗堝拰鏂規硶浠++搴撶殑褰㈠紡鎻愪緵緇欏伐涓氬拰瀛︽湳鐣岀殑鐢ㄦ埛銆偮?/p>

娓告垙寮鍙懧?/p>

Audio/Video聽3D聽C++聽Programming聽Library聽

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

AV3D鏄竴涓法騫沖彴錛岄珮鎬ц兘鐨凜++搴撱備富瑕佺殑鐗規ф槸鎻愪緵3D鍥懼艦錛屽0鏁堟敮鎸侊紙SB,浠ュ強S3M錛夛紝鎺у埗鎺ュ彛錛堥敭鐩橈紝榧犳爣鍜岄仴鎰燂級錛孹MS銆偮?/p>

KlayGE聽

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

鍥藉唴娓告垙寮鍙戦珮鎵嬭嚜宸辯敤C++寮鍙戠殑娓告垙寮曟搸銆侹layGE鏄竴涓紑鏀炬簮浠g爜銆佽法騫沖彴鐨勬父鎴忓紩鎿庯紝騫朵嬌鐢≒ython浣滆剼鏈璦銆侹layGE鍦↙GPL鍗忚涓嬪彂琛屻傛劅璋㈤練鏁忔晱鍏堢敓涓轟腑鍥芥父鎴忓紑鍙戜簨涓氭墍鍋氬嚭鐨勮礎鐚偮?/p>

OGRE聽

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

OGRE聽錛堥潰鍚戝璞$殑鍥懼艦娓叉煋寮曟搸錛夋槸鐢–++寮鍙戠殑錛屼嬌鐢ㄧ伒媧葷殑闈㈠悜瀵硅薄3D寮曟搸銆傚畠鐨勭洰鐨勬槸璁╁紑鍙戣呰兘鏇存柟渚垮拰鐩存帴鍦板紑鍙戝熀浜?D紜歡璁懼鐨勫簲鐢ㄧ▼搴忔垨娓告垙銆傚紩鎿庝腑鐨勭被搴撳鏇村簳灞傜殑緋葷粺搴擄紙濡傦細Direct3D鍜孫penGL錛夌殑鍏ㄩ儴浣跨敤緇嗚妭榪涜浜嗘娊璞★紝騫舵彁渚涗簡鍩轟簬鐜板疄涓栫晫瀵硅薄鐨勬帴鍙e拰鍏跺畠綾匯偮?/p>

綰跨▼聽

C++聽Threads聽

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

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

ZThreads聽

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

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

搴忓垪鍖柭?br />銆s11n聽
銆鍙傝冪綉绔欙細http://s11n.net/聽
銆涓涓熀浜嶴TL鐨凜++搴擄紝鐢ㄤ簬搴忓垪鍖朠OD錛孲TL瀹瑰櫒浠ュ強鐢ㄦ埛瀹氫箟鐨勭被鍨嬨偮?br />銆Simple聽XML聽Persistence聽Library聽
銆鍙傝冪綉绔欙細http://sxp.sourceforge.net/聽
銆榪欐槸涓妸瀵硅薄搴忓垪鍖栦負XML鐨勮交閲忕駭鐨凜++搴撱偮?/p>

瀛楃涓猜?/p>

C++聽Str聽Library聽

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

鎿嶄綔瀛楃涓插拰瀛楃鐨勫簱錛屾敮鎸乄indows鍜屾敮鎸乬cc鐨勫縐嶅鉤鍙般傛彁渚涢珮搴︿紭鍖栫殑浠g爜錛屽茍涓旀敮鎸佸綰跨▼鐜鍜孶nicode錛屽悓鏃惰繕鏈夋鍒欒〃杈懼紡鐨勬敮鎸併偮?/p>

Common聽Text聽Transformation聽Library聽

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

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

GRETA聽

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

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

緇煎悎聽

P::Classes聽

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

涓涓珮搴﹀彲縐繪鐨凜++搴旂敤紼嬪簭妗嗘灦銆傚綋鍓嶅叧娉ㄧ被鍨嬪拰綰跨▼瀹夊叏鐨剆ignal/slot鏈哄埗錛宨/o緋葷粺鍖呮嫭鍩轟簬鎻掍歡鐨勭綉緇滃崗璁忔槑鐨刬/o鏋舵瀯錛屽熀浜庢彃浠剁殑搴旂敤紼嬪簭娑堟伅鏃ュ織妗嗘灦錛岃闂畇ql鏁版嵁搴撶殑綾葷瓑絳夈偮?/p>

ACDK聽-聽Artefaktur聽Component聽Development聽Kit聽

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

榪欐槸涓涓鉤鍙版棤鍏崇殑C++緇勪歡妗嗘灦錛岀被浼間簬Java鎴栬?NET涓殑妗嗘灦錛堝弽灝勬満鍒訛紝綰跨▼錛孶nicode錛屽簾鏂欐敹闆嗭紝I/O錛岀綉緇滐紝瀹炵敤宸ュ叿錛孹ML錛岀瓑絳夛級錛屼互鍙婂Java,聽Perl,聽Python,聽TCL,聽Lisp,聽COM聽鍜屄燙ORBA鐨勯泦鎴愩偮?/p>

dlib聽C++聽library聽

鍙傝冪綉绔欙細http://www.cis.ohio-state.edu/~kingd/dlib/聽

鍚勭鍚勬牱鐨勭被鐨勪竴涓患鍚堛傚ぇ鏁存暟錛孲ocket錛岀嚎紼嬶紝GUI錛屽鍣ㄧ被,浠ュ強嫻忚鐩綍鐨凙PI絳夌瓑銆偮?/p>

Chilkat聽C++聽Libraries聽

鍙傝冪綉绔欙細http://www.chilkatsoft.com/cpp_libraries.asp聽

榪欐槸鎻愪緵zip錛宔-mail錛岀紪鐮侊紝S/MIME錛孹ML絳夋柟闈㈢殑搴撱偮?/p>

C++聽Portable聽Types聽Library聽(PTypes)聽

鍙傝冪綉绔欙細http://www.melikyan.com/ptypes/聽

榪欐槸STL鐨勬瘮杈冪畝鍗曠殑鏇夸唬鍝侊紝浠ュ強鍙Щ妞嶇殑澶氱嚎紼嬪拰緗戠粶搴撱偮?/p>

LFC聽

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

鍝︼紝榪欏張鏄竴涓皾璇曟彁渚涗竴鍒囩殑C++搴撀?/p>

鍏朵粬搴撀?/p>

Loki聽

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

鍝︼紝浣犲彲鑳芥姳鎬ㄦ垜鏃╄鍜孊oost涓璧蜂粙緇嶅畠錛屼竴涓疄楠屾ц川鐨勫簱銆備綔鑰呭湪loki涓妸C++妯℃澘鐨勫姛鑳藉彂鎸ュ埌浜嗘瀬鑷淬傚茍涓斿皾璇曟妸綾諱技璁捐妯″紡榪欐牱鎬濇兂灞傞潰鐨勪笢瑗塊氳繃搴撴潵鎻愪緵銆傚悓鏃惰繕鎻愪緵浜嗘櫤鑳芥寚閽堣繖鏍鋒瘮杈冨疄鐢ㄧ殑鍔熻兘銆偮?/p>

ATL聽

ATL(Active聽Template聽Library)鏄竴緇勫皬宸с侀珮鏁堛佺伒媧葷殑綾伙紝榪欎簺綾諱負鍒涘緩鍙簰鎿嶄綔鐨凜OM緇勪歡鎻愪緵浜嗗熀鏈殑璁炬柦銆偮?/p>

FC++:聽The聽Functional聽C++聽Library聽

榪欎釜搴撴彁渚涗簡涓浜涘嚱鏁板紡璇█涓墠鏈夌殑瑕佺礌銆傚睘浜庣敤搴撴潵鎵╁厖璇█鐨勪竴涓唬琛ㄤ綔銆傚鏋滄兂瑕佸湪OOP涔嬪瀵繪壘鍙︿竴鍒嗙殑涔愯叮錛屽彲浠ュ幓鐪嬬湅鍑芥暟寮忕▼搴忚璁$殑涓栫晫銆傚ぇ甯埪燩eter聽Norvig鍦?Teach聽Yourself聽Programming聽in聽Ten聽Years"涓鏂囦腑灝卞皢鍑芥暟寮忚璦鍒椾負鑷沖皯搴斿綋瀛︿範鐨?綾葷紪紼嬭璦涔嬩竴銆偮?/p>

FACT!聽

鍙傝冪綉绔欙細http://www.kfa-juelich.de/zam/FACT/start/index.html聽

鍙﹀涓涓疄鐜板嚱鏁板紡璇█鐗規х殑搴撀?/p>

Crypto++聽

鎻愪緵澶勭悊瀵嗙爜錛屾秷鎭獙璇侊紝鍗曞悜hash錛屽叕鍖欏姞瀵嗙郴緇熺瓑鍔熻兘鐨勫厤璐瑰簱銆偮?/p>

榪樻湁寰堝闈炲父嬋鍔ㄤ漢蹇冩垨鑰呮槸鏋佸叾瀹炵敤鐨凜++搴擄紝闄愪簬鎴戜滑鐨勬按騫充互鍙婃枃绔犵殑綃囧箙涓嶈兘鍖呮嫭榪涙潵銆傚湪瀵逛簬榪欎簺宸茬粡鍖呭惈榪戞潵鐨勫簱鐨勪粙緇嶄腑錛岀敱浜庡茍涓嶆槸姣忎竴涓垜浠兘浣跨敤榪囷紝鎵浠ラ毦鍏嶆湁鍋忛涔嬪錛岃璇昏呰璋呫偮?/p>

璧勬簮緗戠珯聽

姝e鎴戜滑鍙互閫氳繃璁$畻鏈哄巻鍙蹭笂鐨勯噸瑕佷漢鐗╀簡瑙h綆楁満鍙茬殑鍙戝睍錛孋++鐩稿叧浜虹墿鐨勭綉绔欎篃鍙互浣挎垜浠緱鍒版渶鏈変環鍊肩殑鍙傝冧笌鍊熼壌錛屼笅闈㈢殑浜虹墿鎴戜滑璁や負娌℃湁浠嬬粛鐨勫繀瑕侊紝鍙洜涓嬮潰鐨勪漢鐗╁湪C++棰嗗煙鐨勫湴浣嶄紬鎵鍛ㄧ煡錛屾垜浠彧灝嗙浉鍏崇殑璧勬簮榪涜緗楀垪浠ヤ緵璇昏呭涔狅紝浠栦滑鏈夌殑宸ヤ綔浜庤礉灝斿疄楠屽錛屾湁鐨勫伐浣滀簬鐭ュ悕緙栬瘧鍣ㄥ巶鍟嗭紝鏈夌殑鍦ㄤ笉鏂帹榪涜璦鐨勬爣鍑嗗寲錛屾湁鐨勪負璇昏呮挵鍐欎簡澶氶儴鍗冨彜濂囦綔......聽

Bjarne聽Stroustrup聽http://www.research.att.com/~bs/聽

Stanley聽B.聽Lippman聽

http:聽//blogs.msdn.com/slippman/聽涓枃鐗埪爃ttp:聽//www.zengyihome.net/slippman/index.htm
銆Scott聽Meyers聽http://www.aristeia.com/聽

David聽Musser聽http://www.cs.rpi.edu/~musser/聽

Bruce聽Eckel聽http://www.bruceeckel.com聽

Nicolai聽M.聽Josuttis聽http://www.josuttis.com/聽

Herb聽Sutter聽http://www.gotw.ca/聽

Andrei聽Alexandrescu聽http://www.moderncppdesign.com/




erran 2007-10-13 16:42 鍙戣〃璇勮
]]>
杞細Little Endian & Big Endianhttp://m.shnenglu.com/erran/archive/2007/10/13/34115.htmlerranerranSat, 13 Oct 2007 08:23:00 GMThttp://m.shnenglu.com/erran/archive/2007/10/13/34115.htmlhttp://m.shnenglu.com/erran/comments/34115.htmlhttp://m.shnenglu.com/erran/archive/2007/10/13/34115.html#Feedback0http://m.shnenglu.com/erran/comments/commentRss/34115.htmlhttp://m.shnenglu.com/erran/services/trackbacks/34115.html鍘熸枃錛?a >http://dev.csdn.net/article/39/39864.shtm

Little Endian & Big Endian聽聽聽聽

榪欎釜鏍囬涓殑Endian鏄粈涔堟剰鎬濆憿錛熻繕鏄鎴戜滑鍏堟潵鐪嬬湅涓嬮潰鐨勬儏鍐碉紝榪欐槸鍐呭瓨涓竴涓猈ORD鍊間腑鐨勫唴瀹癸紝閭d箞榪欎釜WORD涓殑鍊兼槸0x1234鍛紝榪樻槸0x3412聽?聽

low聽byte聽high聽byte聽
0x12聽聽聽聽聽 0x34聽

鐔熸倝x86姹囩紪鐨勪漢绔嬪埢灝辯煡閬撹繖涓煎簲涓?x3412錛屽緢瀵癸紝浣嗗湪涓浜涙儏鍐典笅錛屾瘮濡傝浣犲湪SGI鐨勬満鍣ㄤ笂鐪嬪埌榪欑鎯呭喌錛屽垯姝eソ鐩稿弽錛?x1234鎵嶆槸姝g‘絳旀錛岃繖涓嶤PU鍐呴儴澶勭悊鏁版嵁鐨勬柟寮忔湁鍏熾傝繖涓ょ澶勭悊鏂瑰紡閮藉瓨鍦ㄤ簬涓嶅悓鍘傚晢鐢熶駭鐨凜PU涔嬩腑錛屽湪涓婁緥涓嫢姝ORD鍊間負0x3412鐨勶紝鎴戜滑縐頒箣涓簂ittle-endian,聽鑻ヤ負0x1234鐨勶紝鎴戜滑縐頒箣涓篵ig-endian錛岃繖鏄袱縐嶄笉鍚岀殑byte聽orders銆侻SDN涓湁姣旇緝綺劇‘鐨勫畾涔夊涓嬶細

Byte聽Ordering聽Byte聽ordering聽Meaning聽
big-endian聽The聽most聽significant聽byte聽is聽on聽the聽left聽end聽of聽a聽word.聽
little-endian聽The聽most聽significant聽byte聽is聽on聽the聽right聽end聽of聽a聽word.聽

涓鑸潵璇存垜浠笉鐢ㄥ叧蹇僢yte聽ordering鐨勯棶棰橈紝浣嗚嫢瑕佹秹鍙婅法騫沖彴涔嬮棿鐨勯氫俊鍜岃祫婧愬叡浜紝鍒欎笉寰椾笉鑰冭檻榪欎釜闂浜嗐備篃璁鎬綘浼氳錛屾垜姘歌繙涓嶄細鍘葷敤鍏跺畠闈瀤86鐨凜PU錛屼篃璁告槸榪欐牱錛屼綘鐢氳嚦鍙互涓嶅繀鐭ラ亾鎴戜滑鏈甯哥敤鐨処ntel錛孉MD絳夌敓浜х殑x86鐨刡yte聽ordering鏄痩ittle-endian鐨勶紝鑰屼笖鎸夌幇鍦ㄧ殑瑁呮満鏁伴噺鏉ョ湅錛屽彲浠ヨ涓栫晫涓婄粷澶у鏁癈PU鏄痩ittle-endian鐨勶紝浣嗗浜嗚В涓浜涙病鏈変粈涔堝潖澶勶紝涔熻鏈夌敤涓婄殑涓澶╋紝瀹為檯鑻ユ偍瑕佹秹鍙婂埌緗戠粶緙栫▼錛屼簡瑙d竴浜涜繕鏄湁鎵甯姪鐨勶紝鐪嬪畬鏈枃鍚庢偍灝卞簲璇ョ煡閬撲負浣晄ocket緙栫▼涓負浣曡鐢ㄥ埌濡偮爊tohl,聽htonl,聽ntohs,聽htons榪欏嚑涓湅璧鋒潵鍚嶅瓧浼間箮鎬殑API浜嗭紝涔熷緢瀹規槗鐞嗚В榪欎簺鍑芥暟鍚嶇殑鎰忎箟浜嗐?

鍋囪鎴戜滑瑕佸湪涓嶅悓byte聽ordering鐨勬満鍣ㄤ箣闂翠紶杈撳拰浜ゆ崲鏁版嵁錛岄偅璇ユ庝箞鍔炲憿錛屾湁涓や釜鏂規硶錛屼竴鏄叏閮ㄨ漿鎹㈡垚鏂囨湰鏉ヤ紶杈?濡俋ML浣跨敤鐨?錛屽彟涓涓柟娉曚袱鏂歸兘鎸夌収鏌愪竴鏂圭殑byte聽order錛岃繖鏃跺氨娑夊強鍒頒簡涓嶅悓byte聽order涔嬮棿鐩鎬簰杞崲鐨勯棶棰橈紙緗戠粶浼犺緭鏍囧噯濡俆CP/IP閲囩敤絎簩縐嶆柟娉曞茍涓旂敱浜庡巻鍙茬殑鍘熷洜錛宐yte聽ordering鏄痓ig-endian鐨勶級銆備袱縐嶄箣闂磋濡備綍杞崲鍛紵鏂規硶鏈夊緢澶氾紝鎴戜滑鍙互鍏堢湅鐪婱FC涓湪澶勭悊serialize鐨勪唬鐮佷腑鎵鐢ㄧ殑鏂規硶(List),聽铏界劧浠g爜搴旇鏄珮鏁堟槗璇葷殑,聽浣嗘垜涓漢騫朵笉鍠滄瀹?聽鍘熷洜鏄垜瑙夊緱榪欎笉鏄竴縐嶉氱敤浼樼編鐨勬柟娉?涓嬮潰鍒楀嚭鐨勬槸鎴戣嚜宸卞啓鐨勮漿鎹㈢殑浠g爜錛?

template
F3D_INLINE聽T ConvertEndian(T聽聽t)
{聽
聽聽聽T tResult聽=聽0;聽
聽聽聽for聽(int聽聽I聽=聽0;聽I聽<聽sizeof(T);聽++聽I)聽
聽聽聽{聽
聽聽聽聽聽聽tResult聽<<=聽8;聽聽聽聽
聽聽聽聽聽聽tResult聽|=聽(t聽&聽0xFF)聽;聽

聽聽聽聽聽聽t聽>>=聽8;聽
聽聽聽}聽
聽聽聽return聽聽tResult;
}

鍘熺悊闈炲父綆鍗曪紝浜ゆ崲瀛楄妭欏哄簭錛屾垜灝變笉澶氳浜嗭紝褰撶劧榪欎釜鍐欐硶騫朵笉鏄揩閫熺殑,聽鍙槸閫氱敤鐨?鎴戞病鏉′歡璇?聽鑻ユ湁涓嶅涔嬪璇鋒寚鍑?,聽鑻ヨ蹇熺殑浠g爜錛屽彲浠ュ湪涓嶅悓platform涓婄敤涓巔latform鐩稿叧鐨勪唬鐮?聽濡傚湪PowerPC涓婃湁聽"load聽word聽byte-reversed聽indexed"聽(lwbrx)聽鍜屄?load聽halfword聽byte-reversed聽indexed"聽(lhbrx)聽鎸囦護,聽鍦▁86涓婅繕鍙敤BSWAP鍗曚釜姹囩紪鎸囦護絳夛紝鍦ㄧ被鍨嬩笂涓撲負int16,聽int32鍐欑殑閫氱敤鐨勪唬鐮佷篃鍙互姣旇繖蹇緱澶?聽

褰撶劧濡傛灉鍦╞yte聽ordering鐩稿悓鐨勬儏鍐典笅錛屽簲璇ヤ笉蹇呯敤榪欎釜杞崲鍑芥暟錛屾墍浠ユ垜浠彲浠ュ畾涔変竴涓畯鏉ュ鐞嗕笉鍚岀殑byte聽ordering錛屼篃鍙互鍦ㄨ繍琛屾椂嫻嬭瘯byte聽ordering,聽涓嬮潰鐨勪唬鐮佺粰鍑轟簡涓涓畝鍗曠殑嫻嬭瘯鏂規硶銆偮?


//聽Test聽for聽endianness.
F3D_INLINE聽bool IsLittleEndian(void)
{聽
聽聽聽DWORD dwTestValue聽=聽0x12345678L;聽
聽聽聽return聽聽(*((BYTE*)&dwTestValue)聽==聽0x78);
}

浣嗘槸float姣旇緝鎬紝鏈夊彲鑳芥墍娑夊強鍒頒笉浠呬粎鏄痓yte聽order鐨勯棶棰橈紝鍥犱負鏈変簺騫沖彴濡侫lpha涓嶄嬌鐢↖EEE鐨勬誕鐐規牸寮忥紝榪樺緱鑷繁杞崲銆傚綋鐒跺悓涓婏紝鍏跺畠鐨勬柟娉曚竴鏄皢鎵鐢ㄧ殑float鐢ㄦ枃鏈柟寮忚緭鍏ヨ緭鍑猴紝鍙︿竴涓姙娉曟槸鍦ㄦ煇浜涙儏鍐典笅鍙皢鍏惰漿鎹㈡垚瀹氱偣鏁板啀澶勭悊錛岃繖閲屾垜涓嶅啀娣卞叆銆?

濡傛灉鏄鍐欑涓夋柟宸茬粡鎸囧畾byte聽order鐨勬枃浠舵垨鏁版嵁嫻侊紝姣斿璇磋SGI鐨勪綅鍥炬枃浠舵牸寮忥紝鍒欏彲浠ョ洿鎺ヨ嚜琛屾寜鎸囧畾鐨刡yte聽order鎷艱搗鏉ワ紝涓嶅繀鑰冭檻host鏈烘槸浣曠byte聽ordering銆備笅闈㈡垜緇欏嚭鐩稿簲鐨勪唬鐮侊細


//聽Read聽a聽little-endian聽TYPE聽from聽address
template
F3D_INLINE聽T GetLittleEndian(const聽BYTE*聽聽pBuf)
{聽
聽聽聽T tResult聽=聽0;聽
聽聽聽pBuf聽+=聽sizeof(T)聽-聽1;聽
聽聽聽for聽(int聽聽I聽=聽0;聽I聽<聽sizeof(T);聽++聽I)聽
聽聽聽{聽
聽聽聽聽聽聽tResult聽<<=聽8;聽
聽聽聽聽聽聽tResult聽|=聽*pBuf聽--;聽
聽聽聽}聽

聽聽聽return聽聽tResult;
}

//聽Read聽a聽big-endian聽TYPE聽from聽address
template
F3D_INLINE聽T GetBigEndian(const聽BYTE*聽聽pBuf)
{聽
聽聽聽T tResult聽=聽0;聽
聽聽聽for聽(int聽聽I聽=聽0;聽I聽<聽sizeof(T);聽++聽I)聽
聽聽聽{聽
聽聽聽聽聽聽tResult聽<<=聽8;聽
聽聽聽聽聽聽tResult聽|=聽*pBuf聽++;聽
聽聽聽}聽

聽聽聽return聽聽tResult;
}

//聽Set聽a聽little-endian聽TYPE聽on聽a聽address
template
F3D_INLINE聽void SetLittleEndian(BYTE*聽聽pBuf,聽T聽聽t)
{聽
聽聽聽for聽(int聽聽I聽=聽0;聽I聽<聽sizeof(T);聽++聽I)聽
聽聽聽{聽
聽聽聽*pBuf聽++聽=聽BYTE(t聽&聽0xFF);聽
聽聽聽t聽>>=聽8;聽
聽聽聽}
}

//聽Set聽a聽big-endian聽T聽on聽a聽address
template
F3D_INLINE聽void SetBigEndian(BYTE*聽聽pBuf,聽T聽聽t)
{聽
聽聽聽pBuf聽+=聽sizeof(T)聽-聽1;聽
聽聽聽for聽(int聽聽I聽=聽0;聽I聽<聽sizeof(T);聽++聽I)聽
聽聽聽{聽
聽聽聽聽聽聽*pBuf聽--聽=聽BYTE(t聽&聽0xFF);聽
聽聽聽聽聽聽t聽>>=聽8;聽
聽聽聽}
}

浠庝笂鏂囧彲浠ョ湅鍑猴紝byte聽order鎸虹畝鍗曠殑錛屼竴鑸簲鐢ㄤ腑鍙兘涔熺敤涓嶄笂錛屼絾鑻ユ偍瀵瑰啓璺ㄥ鉤鍙扮殑紼嬪簭鏈夊叴瓚o紝鍒欎竴瀹氳浜嗚В鐨勬瘮杈冩竻妤氭墠琛屻備互涓婁唬鐮侀兘鏄粠瀹為檯浣跨敤鐨勬簮鐮佷腑鍙栦笅鏉ョ殑銆偮?

闄勶細甯歌Processor,聽OS鐨刡yte聽ordering鎯呭喌

Processor聽OS聽Order聽
x86聽(Intel,聽AMD,聽鈥β?聽All聽little-endian聽
DEC聽Alpha聽All聽little-endian聽
HP-PA聽NT聽little-endian聽
HP-PA聽UNIX聽big-endian聽
SUN聽SPARC聽All?聽big-endian聽
MIPS聽NT聽little-endian聽
MIPS聽UNIX聽big-endian聽
PowerPC聽NT聽little-endian聽
PowerPC聽non-NT聽big-endian聽
RS/6000聽UNIX聽big-endian聽
Motorola聽m68k聽All聽big-endian聽



erran 2007-10-13 16:23 鍙戣〃璇勮
]]>
鎬庢牱瀹炵幇鏁扮洰涓嶅畾鐨勫嚱鏁板弬鏁?/title><link>http://m.shnenglu.com/erran/archive/2006/12/28/16959.html</link><dc:creator>erran</dc:creator><author>erran</author><pubDate>Thu, 28 Dec 2006 12:21:00 GMT</pubDate><guid>http://m.shnenglu.com/erran/archive/2006/12/28/16959.html</guid><wfw:comment>http://m.shnenglu.com/erran/comments/16959.html</wfw:comment><comments>http://m.shnenglu.com/erran/archive/2006/12/28/16959.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.shnenglu.com/erran/comments/commentRss/16959.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/erran/services/trackbacks/16959.html</trackback:ping><description><![CDATA[     鎽樿:   鎬庢牱瀹炵幇鏁扮洰涓嶅畾鐨勫嚱鏁板弬鏁?   2006-12-28 erran   瀹炵幇鏂規硶涓錛氳嚜瀹氫箟鎸囬拡鎵懼埌鍑芥暟鍙傛暟鐨勪笅涓涓弬鏁幫紱   // 渚嬪瓙 A 錛? template<class T> T umin(T _a, ...) {       ...  <a href='http://m.shnenglu.com/erran/archive/2006/12/28/16959.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/erran/aggbug/16959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/erran/" target="_blank">erran</a> 2006-12-28 20:21 <a href="http://m.shnenglu.com/erran/archive/2006/12/28/16959.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍑芥暟鎸囬拡(鍏ㄥ眬鍑芥暟/綾繪垚鍛樺嚱鏁?銆佸嚱鏁板璞?Function object)http://m.shnenglu.com/erran/archive/2006/12/26/16868.htmlerranerranTue, 26 Dec 2006 05:27:00 GMThttp://m.shnenglu.com/erran/archive/2006/12/26/16868.htmlhttp://m.shnenglu.com/erran/comments/16868.htmlhttp://m.shnenglu.com/erran/archive/2006/12/26/16868.html#Feedback2http://m.shnenglu.com/erran/comments/commentRss/16868.htmlhttp://m.shnenglu.com/erran/services/trackbacks/16868.html闃呰鍏ㄦ枃

erran 2006-12-26 13:27 鍙戣〃璇勮
]]>
C/C++澶存枃浠朵竴瑙?/title><link>http://m.shnenglu.com/erran/archive/2006/05/30/7906.html</link><dc:creator>erran</dc:creator><author>erran</author><pubDate>Tue, 30 May 2006 15:35:00 GMT</pubDate><guid>http://m.shnenglu.com/erran/archive/2006/05/30/7906.html</guid><wfw:comment>http://m.shnenglu.com/erran/comments/7906.html</wfw:comment><comments>http://m.shnenglu.com/erran/archive/2006/05/30/7906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/erran/comments/commentRss/7906.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/erran/services/trackbacks/7906.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">C</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆佷紶緇?span lang=EN-US> C++</span></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <assert.h>//</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">璁懼畾鎻掑叆鐐?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <ctype.h> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">瀛楃澶勭悊</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <errno.h> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">瀹氫箟閿欒鐮?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <float.h> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">嫻偣鏁板鐞?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <fstream.h></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US> //</span>鏂囦歡杈撳叆錛忚緭鍑?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <iomanip.h></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US> //</span>鍙傛暟鍖栬緭鍏ワ紡杈撳嚭</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <iostream.h></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//</span>鏁版嵁嫻佽緭鍏ワ紡杈撳嚭</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <limits.h>//</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">瀹氫箟鍚勭鏁版嵁綾誨瀷鏈鍊煎父閲?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <locale.h>//</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">瀹氫箟鏈湴鍖栧嚱鏁?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <math.h></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//</span>瀹氫箟鏁板鍑芥暟</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <stdio.h> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">瀹氫箟杈撳叆錛忚緭鍑哄嚱鏁?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <stdlib.h>//</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">瀹氫箟鏉傞」鍑芥暟鍙婂唴瀛樺垎閰嶅嚱鏁?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <string.h>//</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">瀛楃涓插鐞?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <strstrea.h></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//</span>鍩轟簬鏁扮粍鐨勮緭鍏ワ紡杈撳嚭</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <time.h></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//</span>瀹氫箟鍏充簬鏃墮棿鐨勫嚱鏁?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <wchar.h> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">瀹藉瓧絎﹀鐞嗗強杈撳叆錛忚緭鍑?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <wctype.h>//</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">瀹藉瓧絎﹀垎綾?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">//////////////////////////////////////////////////////////////////////////</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">鏍囧噯<span lang=EN-US> C++</span>銆錛堝悓涓婄殑涓嶅啀娉ㄩ噴錛?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <algorithm></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US> //STL </span>閫氱敤綆楁硶</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <bitset></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//STL </span>浣嶉泦瀹瑰櫒</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <cctype></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <cerrno></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <clocale></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <cmath></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <complex> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">澶嶆暟綾?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <cstdio></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <cstdlib></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <cstring></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <ctime></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <deque></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US> //STL </span>鍙岀闃熷垪瀹瑰櫒</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <exception></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US> //</span>寮傚父澶勭悊綾?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <fstream></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <functional></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//STL </span>瀹氫箟榪愮畻鍑芥暟錛堜唬鏇胯繍綆楃錛?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <limits></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <list>//STL </span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">綰挎у垪琛ㄥ鍣?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <map> //STL </span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">鏄犲皠瀹瑰櫒</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <iomanip></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <ios> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">鍩烘湰杈撳叆錛忚緭鍑烘敮鎸?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <iosfwd></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//</span>杈撳叆錛忚緭鍑虹郴緇熶嬌鐢ㄧ殑鍓嶇疆澹版槑</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <iostream></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <istream> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">鍩烘湰杈撳叆嫻?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <ostream> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">鍩烘湰杈撳嚭嫻?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <queue></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US> //STL </span>闃熷垪瀹瑰櫒</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <set> //STL </span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">闆嗗悎瀹瑰櫒</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <sstream> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">鍩轟簬瀛楃涓茬殑嫻?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <stack></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US> //STL </span>鍫嗘爤瀹瑰櫒</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <stdexcept></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US> //</span>鏍囧噯寮傚父綾?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <streambuf></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US> //</span>搴曞眰杈撳叆錛忚緭鍑烘敮鎸?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <string></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//</span>瀛楃涓茬被</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <utility> //STL </span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">閫氱敤妯℃澘綾?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <vector></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//STL </span>鍔ㄦ佹暟緇勫鍣?/span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <cwchar></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <cwctype></span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">using namespace std;</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">//////////////////////////////////////////////////////////////////////////</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">C99 </span><span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">澧炲姞</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <complex.h> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">澶嶆暟澶勭悊</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <fenv.h>//</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">嫻偣鐜</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <inttypes.h>//</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">鏁存暟鏍煎紡杞崲</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <stdbool.h> //</span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">甯冨皵鐜</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <stdint.h></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//</span>鏁村瀷鐜</span> <span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt"><br><br></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">#include <tgmath.h></span> <span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 瀹嬩綋; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 瀹嬩綋; mso-font-kerning: 0pt">銆<span lang=EN-US>//</span>閫氱敤綾誨瀷鏁板瀹?/span> </p> <img src ="http://m.shnenglu.com/erran/aggbug/7906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/erran/" target="_blank">erran</a> 2006-05-30 23:35 <a href="http://m.shnenglu.com/erran/archive/2006/05/30/7906.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎴戠殑鏁版嵁瀹炰綋閲屽父鏈夌殑鍑犱釜鍑芥暟http://m.shnenglu.com/erran/archive/2006/05/30/7905.htmlerranerranTue, 30 May 2006 15:14:00 GMThttp://m.shnenglu.com/erran/archive/2006/05/30/7905.htmlhttp://m.shnenglu.com/erran/comments/7905.htmlhttp://m.shnenglu.com/erran/archive/2006/05/30/7905.html#Feedback0http://m.shnenglu.com/erran/comments/commentRss/7905.htmlhttp://m.shnenglu.com/erran/services/trackbacks/7905.html鍦ㄦ鑱婅亰鎴戣璁℃暟鎹疄浣撶殑涓浜涘皬浼庝咯^_^ .........     

涓轟簡鏂逛究鏁版嵁鐨勭粍緇?span lang=EN-US>.
榪愮畻浠ュ強鏁版嵁瀹炰綋綾葷殑浣跨敤, 涓鑸垜浼氭妸鎵鏈夋暟鎹疄浣撲粠鍚屼竴涓疄浣撳熀綾葷戶鎵胯屾潵, 鍩虹被閲屾湁涓浜涘父鐢ㄧ殑鍑芥暟, 浠ョ被CEntiy涓轟緥璇存槑濡備笅 :

1.    CEntity(const CEntity& ent);

棣栧厛褰撶劧鏄嫹璐濇瀯閫犲嚱鏁?span lang=EN-US>, 鍦ㄥ疄闄呬嬌鐢ㄥ疄浣撹繃紼嬩腑榪欎釜鍑芥暟寰堟湁鐢?span lang=EN-US>, 褰撶劧鍦?span lang=EN-US>CEntity鐨勬淳鐢熺被涓垜涔熶細鍘誨疄鐜板叾媧劇敓綾葷殑鎷瘋礉鏋勯犲嚱鏁?/font> .


2.    virtual ~CEntity();

 
鏋愭瀯鍑芥暟, 榪欎釜灝變笉蹇呰浜?span lang=EN-US>, 瑕?/font> virtual


3.  virtual CString GetTypeID(void) const;

姝ゅ嚱鏁拌繑鍥炰竴涓?span lang=EN-US>CString綾誨瀷鐨勫疄浣撴爣璇?span lang=EN-US>, 浠ユ爣鏄庡埌搴曟槸閭d釜綾?span lang=EN-US>, 鍦ㄥ熀綾諱腑鎴戜竴鑸繖鏍峰疄鐜?span lang=EN-US>: return  _T("ENT_UNKNOW");   寰堟樉鐒舵垜浼氬湪CEntity鐨勬瘡涓涓淳鐢熺被涓噸杞借繖涓嚱鏁?span lang=EN-US>, 鏈変簡榪欎釜鍑芥暟, 灝卞彲浠ュ緢鏂逛究鐨勪粠涓涓熀綾葷殑鎸囬拡鐭ラ亾鍏跺疄渚嬪寲鐨勫埌搴曟槸鍝竴涓淳鐢熺被鐨勫璞?span lang=EN-US>, 榪欐牱灝卞彲浠ュ緢鏂逛究鐨勭鐞嗙郴緇熶腑澶氫釜鐩鎬技鏁版嵁瀹炰綋灝卞彲浠ユ妸鎵鏈夌殑鏁版嵁瀹炰綋瀹炰緥鍖栦負鍩虹被鐨勬寚閽?span lang=EN-US>,  鍏充簬鏁版嵁瀹炰綋鐨勬帴鍙i兘鍙互鐢ㄥ熀綾葷殑鎸囬拡鎴栬呭紩鐢ㄧ被鍨?span lang=EN-US>,  鑰屼笉鐢ㄥ幓鎷呭績浠栧埌搴曟槸閭d釜媧劇敓綾葷殑瀵硅薄褰撶劧涔熷彲浠?span lang=EN-US> virtual int GetTypeID(void) const;  virtual DWORD GetTypeID(void) const; virtual DWORD GetClassID(void) const;絳夌瓑銆?span lang=EN-US>

4.        virtual void Initiate(void);

鏁版嵁鍒濆鍖栥?鍒濆鍖栨暟鎹疄浣撶殑鏁版嵁.

 

5 錛?span lang=EN-US> virtual void Reset(void);

鏁版嵁澶嶄綅鎿嶄綔銆傛妸鏁版嵁瀹炰綋澶嶄綅鍒版煇涓鐘舵?span lang=EN-US>.

 

5.        virtual CEntity * Clone(void) const;

鍏嬮殕鏁版嵁瀹炰綋. 榪欎釜鍑芥暟涓鑸繖鏍峰疄鐜?span lang=EN-US>: return new CEntity(*this);

 

6.        virtual void Serialize(CArchive& ar);

鏁版嵁涓茶鍖?span lang=EN-US>. 浠ュ疄鐜版暟鎹疄浣撳乏鍙崇Щ鏂瑰紡鐨勫鏁版嵁瀹炰綋璧嬪?span lang=EN-US>,淇濆瓨絳夋搷浣?span lang=EN-US>. 甯告妸鍏朵笌CMemFile涓璧蜂嬌鐢?span lang=EN-US>,鎰熻鏁堟灉寰堝ソ.鍞竴涓嶈凍鐨勬槸瑙e喅鏁版嵁瀹炰綋鐗堟湰鍗囩駭鏃剁殑鏁版嵁涓鑷存х殑闂寰堥夯鐑?span lang=EN-US>.


7.        virtual BOOL DataSet(const CEntity& ent);

鍒鋒柊鏁版嵁,瀹炵幇鏁版嵁瀹炰綋涔嬮棿鐨勮祴鍊兼搷浣?span lang=EN-US>.榪欎釜鍑芥暟涓昏鏄負浜嗚В鍐充笂涓綃囨墍鎻愮殑闂( C++闅忕瑪鍏充簬virtual poperator = ( 05-22 01:09) ). 鍙互鎶婁粬璁句負protected綾誨瀷, 鍚?span lang=EN-US>operator=緇撳悎璧鋒潵浣跨敤, 渚?span lang=EN-US>poperator =璋冪敤.


8.           const CEntity& operator=(const CEntity& ent);

璧嬪兼搷浣?span lang=EN-US>.鍦ㄦ淳鐢熺被涓篃浼氶噸杞?span lang=EN-US>operator=, 涓嶆槸閲嶈澆鍩虹被鐨?span lang=EN-US>operator=.


9.        鍙﹀濡傛灉瀛樺湪鏁版嵁姣旇緝鐨勮瘽, 浼氶噸杞?span lang=EN-US>operator==鎿嶄綔絎?span lang=EN-US>.

 friend bool operator==(const CEntity& ent1, const CEntity& ent2);

 friend bool operator!=(const CEntity& ent1, const CEntity& ent2);

 

璋㈣阿鍏蟲敞~~~

浠ヤ笅闄勪笁鐩哥數嫻佺數鍘嬫暟鎹疄浣撻儴鍒嗗疄鐜頒唬鐮?span lang=EN-US>:

 

class CThreePhaseEntity: public CEntity

{

public:

       CThreePhaseEntity ();

       CThreePhaseEntity (const CSixPhaseEntity& ent);

       ~CSixPhaseEntity();

public:

       CString GetTypeID(void) const;

       void Initiate(void);

       void Reset(void);

 

public:

       CEntity * Clone(void) const;

       void Serialize(CArchive& ar);

       BOOL DataSet(const CEntity& ent);

 

public:

       const CSixPhaseEntity& operator=(const CSixPhaseEntity& ent);

       friend bool operator==(const CSixPhaseEntity& ent1, const CSixPhaseEntity& ent2);

       friend bool operator!=(const CSixPhaseEntity& ent1, const CSixPhaseEntity& ent2);

 

public:

// 鑾峰彇涓夌浉鏁版嵁 , 鍐呰仈鍑芥暟

       const float& GetSixPhaseData(int nDateType, int nPhaseMark) const;

       // 淇敼涓夌浉鏁版嵁 , 鍐呰仈鍑芥暟

       void SetSixPhaseData(int nDataType, int nPhaseMark, const float& fData);

 

private:   

       float m_gfRange[3];  // 騫呭?/span> ,

       float m_gfPhase[3];  // 鐩鎬綅 ,

       float m_gfFrequency[3];  // 棰戠巼

};

 

 

 

///******cpp 鏂囦歡

 

CThreePhaseEntity:: CThreePhaseEntity ()

{

       Initiate();

}

 

CThreePhaseEntity:: CThreePhaseEntity (const CThreePhaseEntity & ent)

{

       for(int i=0; i<3; i++)

       {

              m_gfRange[i] = ent.m_gfRange[i];

              m_gfPhase[i] = ent.m_gfPhase[i];

              m_gfFrequency[i] = ent.m_gfFrequency[i];

       }

}

 

CThreePhaseEntity::~ CThreePhaseEntity ()

{

}

 

CString CThreePhaseEntity::GetTypeID(void) const

{

       return _T("ENT_THREEPHASE ");

}

 

void CThreePhaseEntity::Initiate()

{

       for(int i=0; i<3; i++)

       {

              m_gfRange[i] = 0.0f;

              m_gfPhase[i] = 0.0f;

              m_gfFrequency[i] = 0.0f;

       }

}

 

void CThreePhaseEntity::Reset(void)

{

       for(int i=0; i<3; i++)

       {

              m_gfRange[i] = 57.740f;

m_gfFrequency[i] = 50.0f;

}

m_ gfPhase [0] = 0.0f

m_ gfPhase [1] = -120.0f

m_ gfPhase [2] = 120.0f

}

 

void CThreePhaseEntity::Serialize(CArchive& ar)

{

       if(ar.IsStoring())

       {

              for(int i=0; i<3; i++)

{

ar<<m_gfRange[i]<<m_gfPhase[i]<<m_gfFrequency[i];

}

       }

       else

       {

              for(int i=0; i<3; i++)

{

ar>>m_gfRange[i]>>m_gfPhase[i]>>m_gfFrequency[i];

}

       }

}

 

BOOL CThreePhaseEntity::DataSet(const CEntity& ent)

{

       if(GetTypeID() != ent.GetTypeID()) return FALSE;

      

       const CThreePhaseEntity * pEnt = reinterpret_cast<const CThreePhaseEntity *>(&ent);

 

       (*this) = (*pEnt);

 

       return TRUE;

}

 

CEntity * CThreePhaseEntity::Clone(void) const

{

       return new CThreePhaseEntity (*this);

}

 

const CThreePhaseEntity & CThreePhaseEntity::operator=(const CThreePhaseEntity & ent)

{

       if(this == &ent) return *this;

 

       for(int i=0; i<3; i++)

       {

              m_gfRange[i] = ent.m_gfRange[i];

              m_gfPhase[i] = ent.m_gfPhase[i];

              m_gfFrequency[i] = ent.m_gfFrequency[i];

       }

 

       return *this;

}

 

bool operator==(const CThreePhaseEntity & ent1, const CThreePhaseEntity & ent2)

{

       for(int i=0; i<3; i++)

       {

              if(ent1.m_gfRange[i] != ent2.m_gfRange[i]) return false;

              if(ent1.m_gfPhase[i] != ent2.m_gfPhase[i]) return false;

              if(ent1.m_gfFrequency[i] != ent2.m_gfFrequency[i]) return false;

       }

 

       return true;

}

 

bool operator!=(const CThreePhaseEntity & ent1, const CThreePhaseEntity & ent2)

{

       return (ent1 == ent2) ? false : true;

}



erran 2006-05-30 23:14 鍙戣〃璇勮
]]>
C++闅忕瑪 鍏充簬virtual operator =http://m.shnenglu.com/erran/archive/2006/05/22/7466.htmlerranerranSun, 21 May 2006 17:09:00 GMThttp://m.shnenglu.com/erran/archive/2006/05/22/7466.htmlhttp://m.shnenglu.com/erran/comments/7466.htmlhttp://m.shnenglu.com/erran/archive/2006/05/22/7466.html#Feedback1http://m.shnenglu.com/erran/comments/commentRss/7466.htmlhttp://m.shnenglu.com/erran/services/trackbacks/7466.html濡傛灉鍦ㄦ淳鐢熺被涓閲嶈澆媧劇敓綾葷殑operator = 錛岄偅涔堝湪鍩虹被涓竴鑸笉瑕侀噸杞給perator = 錛屽洜涓鴻繖鏍蜂細甯︽潵寰堝楹葷儲.

瀹氫箟浜嗕袱涓被錛?br> class CBase
{  
public:
   CBase()
   {
        cout<<"CBase constructing ..."<<endl;
    }
   virtual ~CBase()
   {
        cout<<"CBase destructing ..."<<endl;
    }
public:
   CBase & operator=(const CBase & ent)
   {
         cout<<"CBase operator = ... "<<endl;
         return *this;
    }
};

class CDerive: public CBase
{
public:
     CDerive()
     {
           cout<<"CDerive constructing 
     }
     ~CDerive()
     {
            cout<<"CDerive destructing ..."<<endl;
      } 
public:
     CDerive & operator=(const CDerive & ent)
    {
           cout<<"CDerive operator = ... "<<endl;
           return *this;
     }
}

瀹氫箟濡備笅鎿嶄綔錛?br>
CBase * b1 = new CDerive();
CBase * b2 = new CDerive();

(*b1) = (*b2);

鍙互鐪嬪埌鍏惰緭鍑轟負錛?br>CBase constructing ...
CDerive constructing ...
CBase constructing ...
CDerive constructing ...
CBase operator = ...
CDerive destructing ...
CBase destructing ...
CDerive destructing ...
CBase destructing

鑰屽疄闄呬笂錛屾搷浣?*b1) = (*b2)鏄兂鎶奲1,b2瀹為檯鎵鎸囩被鍨嬬殑涓や釜瀵硅薄涔嬮棿榪涜璧嬪鹼紝浣嗘槸瀹冨彧鏄皟鐢ㄤ簡鍩虹被鐨勮祴鍊兼搷浣滐紝娌℃湁鎵ц鍏舵湰韜淳鐢熺被鐨勮祴鍊兼搷浣溿?br>
鍙戠幇鏈変袱縐嶆柟娉曞彲浠ヨВ鍐寵繖涓棶棰橈紝濡傛灉鑳藉鐭ラ亾鍩虹被鎸囬拡瀹為檯鎵鎸囩殑鏄摢涓淳鐢熺被鐨勭殑瀵硅薄錛岀洿鎺ョ被鍨嬭漿鎹㈠氨鍙互浜嗭細

(*((CDerive*)b1)) = (*((CDerive*)b2));

榪欐牱鍙互鍙戠幇杈撳嚭浜嗭細CDerive operator = ... 銆備絾鏄綋瑕佸畾涔夊熀綾葷殑鎸囬拡鐨勬椂鍊欙紝寰寰闅愯棌浜嗗叿浣撶殑媧劇敓綾伙紝鍗沖線寰涓嶇煡閬撴寚閽堝埌搴曞疄鐜扮殑鏄摢涓淳鐢熺被錛屾墍浠ヨ繖縐嶆柟娉曟湁寰堝灞闄愭с?br>
榪欐椂鍊欏彲浠ラ噰鐢ㄧ浜岀鏂規硶錛屽嵆鍦ㄦ淳鐢熺被涓噸杞藉熀綾葷殑璧嬪兼搷浣滅錛屽嵆棣栧厛鎶婂熀綾葷殑operator=瀹氫箟涓簐irtual operator錛濓紝鍐嶅湪媧劇敓綾諱腑閲嶈澆榪欎釜錛屽錛?br>
CBase & operator=(const CBase & ent)
 {
       const CDerive * p = reinterpret_cast<const CDerive *>(&ent);
       return operator=((*p));
 }

濂界殑錛屽綋鍐嶆墽琛?(*b1) = (*b2) 鐨勬椂鍊欏氨鍙互鐪嬪埌杈撳嚭錛欳Derive operator = ... 銆?br>

 鍦ㄦ鍙戠幇鍦ㄦ淳鐢熺被涓噸杞芥淳鐢熺被鐨刼perator =鐨勬椂鍊欙紝濡傛灉鍦ㄥ熀綾諱腑涔熼噸杞給perator = 錛岃繖鏍蜂細甯︽潵寰堝楹葷儲錛屽彲鑳戒細涓㈠け寰堝涔熻涓嶆兂涓㈠け鐨勬暟鎹?br> 
鍚屾牱錛屼緷嬈¤繕瀛樺湪闂錛?
CBase * b1 = new CDerive();
CDervie * d1 = new CDerive();

(*b1) = (*d1);

CBase * b2 = new CBase ();
CDervie * d2 = new CDerive();
(*b2) = (*d2);

鎵浠ユ垜涓漢瑙夊緱錛屽鏋滀竴涓熀綾繪湁寰堝涓淳鐢熺被鐨勶紝鑰屾淳鐢熺被涓張閲嶈澆浜嗘淳鐢熺被鏈韓鐨勮祴鍊兼搷浣滅鐨勬椂鍊欙紝鍒欏熀綾諱腑鏈濂戒笉瑕佸幓閲嶈澆璧嬪兼搷浣滅錛屼笉濡傜洿鎺ョ敤鍑芥暟鍘昏祴鍊箋傛濡?c++緙栫▼鎬濇兂>鎵璇撮偅鏍鳳紝榪愮畻絎﹂噸杞藉彧鏄負浜嗕竴縐嶈娉曚笂鐨勬柟渚匡紝鏄彟澶栦竴縐嶅嚱鏁拌皟鐢ㄦ柟寮忥紝濡傛灉涓嶈兘甯︽潵鏂逛究錛屽氨娌″繀瑕佷簡錛岃繕涓嶅鐩存帴鐢ㄥ嚱鏁板幓浠f浛銆?


.............鏁鎸囩偣..................


erran 2006-05-22 01:09 鍙戣〃璇勮
]]>
C++闅忕瑪 鍏充簬璧嬪兼搷浣?鍐呭瓨涓㈠けhttp://m.shnenglu.com/erran/archive/2006/05/21/7451.htmlerranerranSat, 20 May 2006 16:47:00 GMThttp://m.shnenglu.com/erran/archive/2006/05/21/7451.htmlhttp://m.shnenglu.com/erran/comments/7451.htmlhttp://m.shnenglu.com/erran/archive/2006/05/21/7451.html#Feedback4http://m.shnenglu.com/erran/comments/commentRss/7451.htmlhttp://m.shnenglu.com/erran/services/trackbacks/7451.html寮鍙戜腑鍙戠幇鍦ㄨ繘琛?nbsp;璧嬪兼搷浣滅殑鏃跺欙紝寰堝鏄撳唴瀛樹涪澶憋紝鐪嬪疄渚嬶細

class CEntity
{
public:
    CEntity(char flag);
    ~CEntity();
private: 
    char m_flag;
};

CEntity::CEntity(char flag)
{
    m_flag = flag; 
    cout<<"constructing entity "<<m_flag<<endl; 
}

CEntity::~CEntity()
{
 cout<<"destructing entity "<<m_flag<<endl;
}

鎵ц浠g爜錛?br>int main(int argc, char* argv[])
{
    CEntity m('m'),n('n');
    m = n;
    return 0;
}

杈撳嚭涓猴細
constructing entity m
constructing entity n
destructing entity n
destructing entity n

榪欎釜娌℃湁鍑虹幇浠諱綍闂錛屽緢鎴愬姛錛屽洜涓哄湪CEntity閲岄潰娌℃湁new浠諱綍涓滆タ錛屽鏋滄妸CEntity璇ヤ負錛?br>class CEntity
{
enum {SIZE = 10};
public:
    CEntity(char flag);
    ~CEntity();
private:     
    char * m_flag;
};

CEntity::CEntity(char flag)
{
    m_flag = new char[SIZE ];
    m_flag[0] = flag; 
    cout<<"constructing entity "<<m_flag[0]<<endl; 
}

CEntity::~CEntity()
{
 cout<<"destructing entity "<<m_flag[0]<<endl;
delete[] m_flag;
}

鎵ц鍚屾牱鐨刴ain鍑芥暟錛岀▼搴忓皢鏃犳硶榪愯錛宒ebug assertion error!

榪欎釜闂璇ユ庝箞瑙e喅錛?/font> 鍏堢潯瑙?br>

濡俹osky鎵璇達紝閲嶈澆浜嗚祴鍊兼搷浣滅錛岄棶棰樺氨瑙e喅浜嗭紝


CEntity & CEntity::operator=(const CEntity & ent)
{
    if (ent.m_flag == NULL)
    {
        if (m_flag != NULL)
        {
            delete [] m_flag;
            m_flag = NULL;
        }
    }
    else 
    {
        if (m_flag == NULL)
        {
            m_flag = new char[SIZE];
        }
  
        for(int i=0; i<SIZE; i++)
        {  
               m_flag[i] = ent.m_flag[i];
        }
    }
    return *this;
}

鐢辨鍙鑷畾涔夊璞′箣闂寸殑璧嬪兼搷浣滆灝忓績琛屼簨.....

 



erran 2006-05-21 00:47 鍙戣〃璇勮
]]>
C++闅忕瑪 delete void *http://m.shnenglu.com/erran/archive/2006/05/20/7450.htmlerranerranSat, 20 May 2006 15:48:00 GMThttp://m.shnenglu.com/erran/archive/2006/05/20/7450.htmlhttp://m.shnenglu.com/erran/comments/7450.htmlhttp://m.shnenglu.com/erran/archive/2006/05/20/7450.html#Feedback4http://m.shnenglu.com/erran/comments/commentRss/7450.htmlhttp://m.shnenglu.com/erran/services/trackbacks/7450.html鐢ㄤ簡榪欎箞涔呯殑C++錛屾墠鍙戠幇C++鏄洰鍓嶆墍鏈夌殑緙栨垚璇█涓渶涓哄鏉傜殑涓縐嶏紝C++涔嬭礬,   鑹伴毦.....

   
            delete void *

           榪欎竴鎿嶄綔瀵逛簬涓浜涚畝鍗曠殑緋葷粺鍐呭緩綾誨瀷涓嶄細鏈夐棶棰橈紝浣嗗鏋渧oid*鎵鎸囧悜鐨勫璞″湪鏋愭瀯鍑芥暟閲岃閲婃斁錛岃繘琛屾閫犱綔浼氫涪澶卞唴瀛橈紝鍥犱負瀹冧笉鎵ц鏋愭瀯鍑芥暟錛屼緥濡傦細                               
                                    
class CEntity
{
public:
    CEntity(char flag);
    ~CEntity();
private:
    void * m_data;
   char   m_flag;
};

CEntity::CEntity(char flag)
{
   m_flag = flag;
    cout<<"constructing entity "<<m_flag<<endl;
    m_data = new char[100]; 
}

CEntity::~CEntity()
{
    cout<<"destructing entity "<<m_flag<<endl;
    delete[] m_data;
}

浠ヤ笂榪欎釜綾繪槸娌′粈涔堥棶棰樼殑錛屼絾鏄湅浠ヤ笅鐨勮皟鐢細
int main(int argc, char* argv[])
{
       CEntity * a = new CEntity('a');
       delete a;

       void * b = new CEntity('b');
       delete b;
 
       return 0;
}

鍏惰緭鍑轟負錛?nbsp;constructing entity a
                       destructing entity a
                       constructing entity b                                    
鍙錛宒elete b 鐨勬椂鍊欐病鏈夐噴鏀緈_data鎵鎸囧悜鐨勫唴瀛橈紝娌℃湁鎵ц鏋愭瀯鍑芥暟銆?nbsp;              
                     
               



erran 2006-05-20 23:48 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲精品国精品久久99热一| 99热精品在线| 久久午夜电影网| 久久久久久久网站| 久久精品在线视频| 欧美第一黄网免费网站| 欧美日韩另类丝袜其他| 国产精品ⅴa在线观看h| 国产欧美婷婷中文| 激情欧美一区二区三区| 亚洲经典三级| 午夜精品在线视频| 欧美 日韩 国产 一区| 91久久亚洲| 亚洲一区欧美激情| 久久一区二区三区av| 欧美国产视频一区二区| 国产精品国产精品国产专区不蜜| 91久久国产综合久久| 日韩亚洲在线观看| 欧美一区激情视频在线观看| 欧美成人免费网站| 国产精品vip| 欧美成黄导航| 国产精品丝袜xxxxxxx| 好看的日韩视频| 另类天堂视频在线观看| 欧美日韩一二三区| 国产真实乱子伦精品视频| 亚洲品质自拍| 久久久久网站| 亚洲综合色婷婷| 欧美另类一区二区三区| 黄色成人在线网址| 亚洲欧美99| 亚洲精品免费在线播放| 久久久久欧美精品| 国产精品一区二区三区乱码| 亚洲九九精品| 欧美大片在线看| 欧美在线视频观看| 国产精品日韩在线| 亚洲无限av看| 亚洲黄色成人| 麻豆成人av| 极品少妇一区二区| 久久久人成影片一区二区三区观看 | 亚洲欧美日韩区| 亚洲国产欧美一区二区三区丁香婷| 欧美亚洲在线视频| 国产精品夜夜夜| 亚洲特黄一级片| 亚洲人久久久| 久久aⅴ国产欧美74aaa| 日韩一级二级三级| 欧美午夜影院| 午夜一区二区三区在线观看| 在线一区二区日韩| 欧美视频中文字幕| 亚洲午夜精品久久| 亚洲午夜91| 国产精品亚洲人在线观看| 欧美呦呦网站| 久久精品99国产精品| 在线电影欧美日韩一区二区私密| 麻豆精品视频在线观看视频| 久久人体大胆视频| 亚洲日本成人网| 亚洲精品乱码久久久久久蜜桃91 | 欧美3dxxxxhd| 久久夜色精品| 欧美成黄导航| 久久深夜福利| 亚洲级视频在线观看免费1级| 媚黑女一区二区| 美女精品国产| 亚洲一本大道在线| 亚洲午夜小视频| 国产一区二区三区自拍| 欧美大片在线看| 欧美日韩一区在线观看| 欧美一区日本一区韩国一区| 久久疯狂做爰流白浆xx| 亚洲精选一区| 午夜精品成人在线| 亚洲国产欧美一区二区三区丁香婷| 91久久综合| 国产日韩欧美亚洲一区| 欧美福利视频在线| 国产精品久久久一区二区三区 | 亚洲国内高清视频| 日韩午夜黄色| 黄色日韩精品| 久久视频免费观看| 欧美人与性动交cc0o| 久久爱www久久做| 欧美福利视频网站| 欧美在线播放| 欧美日韩免费观看一区=区三区| 久久av一区二区三区| 欧美成人按摩| 久久亚洲影院| 国产精品美女久久久浪潮软件| 欧美 日韩 国产一区二区在线视频| 欧美日韩国产精品一卡| 久热精品视频| 国产欧美一区二区三区另类精品| 亚洲第一网站免费视频| 国产情侣一区| 中文在线资源观看视频网站免费不卡| 黑人操亚洲美女惩罚| 在线中文字幕日韩| 99在线|亚洲一区二区| 久久精品91久久香蕉加勒比| 亚洲欧美视频在线| 欧美日韩免费在线观看| 亚洲国产精品悠悠久久琪琪| 一区在线影院| 久久av一区| 欧美一区二区免费| 国产精品乱人伦中文| 亚洲靠逼com| 一本大道久久a久久精二百| 久久乐国产精品| 久久一区二区三区四区| 国产午夜精品全部视频在线播放 | 欧美精品观看| 欧美黄色一级视频| 亚洲国产精品123| 久久蜜桃资源一区二区老牛| 久久国产高清| 国产亚洲欧美一区二区| 欧美在线播放一区| 欧美激情va永久在线播放| 亚洲韩国精品一区| 亚洲免费影视第一页| 亚洲欧美日韩人成在线播放| 欧美国产第一页| 亚洲电影免费观看高清完整版在线| 国产一区自拍视频| 久久精品2019中文字幕| 裸体一区二区三区| 亚洲国产精品va在线看黑人| 欧美777四色影视在线| 91久久久亚洲精品| 亚洲视频欧洲视频| 国产精品无码永久免费888| 亚洲影院污污.| 亚洲第一中文字幕| 欧美成人免费全部观看天天性色| 91久久夜色精品国产网站| 中文一区字幕| 国产亚洲亚洲| 久久综合伊人| 一区二区日韩精品| 久久精品国产第一区二区三区最新章节 | 国产欧美午夜| 欧美淫片网站| 欧美国产精品专区| 亚洲一区自拍| 激情综合中文娱乐网| 欧美人与性动交α欧美精品济南到| 一本久久综合亚洲鲁鲁五月天| 欧美一区二区三区四区高清| 在线不卡免费欧美| 欧美日韩视频不卡| 久久福利一区| 一区二区三区日韩欧美| 麻豆精品视频在线观看视频| 亚洲精品视频在线看| 国产精品一区二区久久| 可以看av的网站久久看| 亚洲午夜国产一区99re久久 | 亚洲一区二区三区色| 国产一级揄自揄精品视频| 欧美顶级大胆免费视频| 亚洲伊人色欲综合网| 欧美激情无毛| 久久国产精品久久久久久| 亚洲国产精品久久久久婷婷884 | 久久国产精品久久久久久久久久| 亚洲激情电影中文字幕| 久久精品视频在线观看| 亚洲视频欧美在线| 亚洲国产精品尤物yw在线观看| 国产精品国码视频| 欧美精品粉嫩高潮一区二区| 久久久久久夜| 欧美亚洲综合网| 亚洲视频免费在线| 亚洲美女视频网| 亚洲第一精品夜夜躁人人爽| 久久综合狠狠综合久久综合88| 香蕉av777xxx色综合一区| 一区二区三区精品| 日韩网站免费观看| 亚洲人成网站在线观看播放| 一区精品久久| 亚洲国产mv| 久久五月婷婷丁香社区|