锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
涓銆佸畾涔?
綰櫄鍑芥暟鏄湪鍩虹被涓0鏄庣殑铏氬嚱鏁幫紝瀹?font color="#ff0000">鍦ㄥ熀綾諱腑娌℃湁瀹氫箟錛屼絾瑕佹眰浠諱綍媧劇敓綾婚兘瑕佸畾涔夎嚜宸辯殑瀹炵幇鏂規硶銆傚湪鍩虹被涓疄鐜扮函铏氬嚱鏁扮殑鏂規硶鏄湪鍑芥暟鍘熷瀷鍚庡姞鈥?0鈥?/p>
virtual void funtion1()=0
浜屻佸紩鍏ュ師鍥狅細
1銆佷負浜嗘柟渚夸嬌鐢ㄥ鎬佺壒鎬э紝鎴戜滑甯稿父闇瑕佸湪鍩虹被涓畾涔夎櫄鎷熷嚱鏁般?br />2銆佸湪寰堝鎯呭喌涓嬶紝鍩虹被鏈韓鐢熸垚瀵硅薄鏄笉鍚堟儏鐞嗙殑銆備緥濡傦紝鍔ㄧ墿浣滀負涓涓熀綾誨彲浠ユ淳鐢熷嚭鑰佽檸銆佸瓟闆絳夊瓙綾伙紝浣嗗姩鐗╂湰韜敓鎴愬璞℃槑鏄句笉鍚堝父鐞嗐?/p>
涓轟簡瑙e喅涓婅堪闂錛屽紩鍏ヤ簡綰櫄鍑芥暟鐨勬蹇碉紝灝嗗嚱鏁板畾涔変負綰櫄鍑芥暟錛堟柟娉曪細virtual ReturnType Function()= 0;錛夛紝鍒欑紪璇戝櫒瑕佹眰鍦ㄦ淳鐢熺被涓繀欏諱簣浠ラ噸杞戒互瀹炵幇澶氭佹?/font>銆傚悓鏃跺惈鏈夌函铏氭嫙鍑芥暟鐨勭被縐頒負鎶借薄綾伙紝瀹冧笉鑳界敓鎴愬璞°傝繖鏍峰氨寰堝ソ鍦拌В鍐充簡涓婅堪涓や釜闂銆?/p>
涓夈佺浉浼兼蹇碉細 1銆佸鎬佹?/p>
鎸囩浉鍚屽璞℃敹鍒頒笉鍚屾秷鎭垨涓嶅悓瀵硅薄鏀跺埌鐩稿悓娑堟伅鏃朵駭鐢熶笉鍚岀殑瀹炵幇鍔ㄤ綔銆侰++鏀寔涓ょ澶氭佹э細緙栬瘧鏃跺鎬佹э紝榪愯鏃跺鎬佹с?/p>
a.緙栬瘧鏃跺鎬佹э細閫氳繃閲嶈澆鍑芥暟瀹炵幇 b 榪愯鏃跺鎬佹э細閫氳繃铏氬嚱鏁?/font>瀹炵幇銆?/font> 2銆佽櫄鍑芥暟 铏氬嚱鏁版槸鍦ㄥ熀綾諱腑琚0鏄庝負virtual錛屽茍鍦ㄦ淳鐢熺被涓噸鏂板畾涔夌殑鎴愬憳鍑芥暟錛屽彲瀹炵幇鎴愬憳鍑芥暟鐨勫姩鎬侀噸杞?/p>
3銆佹娊璞$被
鍖呭惈綰?/font>铏氬嚱鏁扮殑綾葷О涓烘娊璞$被銆傜敱浜庢娊璞$被鍖呭惈浜嗘病鏈夊畾涔夌殑綰櫄鍑芥暟錛屾墍浠ヤ笉鑳藉畾涔夋娊璞$被鐨勫璞°?/p>
紼嬪簭涓句緥錛?/p>
鍩虹被: }; 瀛愮被: }; f1()鏄竴涓櫘閫氱殑閲嶈澆.
聽錛堝洓錛?br />聽聽 int temp=0;聽聽 //閫氳繃瀵?鏂規硶涓 鐨勬葷粨錛屾垜浠綔濡備笅璋冩暣錛屽湪swap()鍑芥暟涓紝鎴戜滑绔嬪埢鏀瑰彉涓存椂鎸囬拡聽
聽聽聽 棣栧厛鐪嬩竴涓媠izeof鍦╩sdn涓婄殑瀹氫箟錛?/font>
聽聽聽 The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.
聽聽聽 鐪嬪埌return榪欎釜瀛楃溂錛屾槸涓嶆槸鎯沖埌浜嗗嚱鏁幫紵閿欎簡錛宻izeof涓嶆槸涓涓嚱鏁幫紝浣犺榪囩粰涓涓嚱鏁頒紶鍙傛暟錛岃屼笉鍔犳嫭鍙風殑鍚楋紵sizeof鍙互錛屾墍浠izeof涓嶆槸鍑芥暟銆傜綉涓婃湁浜鴻sizeof鏄竴鍏冩搷浣滅錛屼絾鏄垜騫朵笉榪欎箞璁や負錛屽洜涓簊izeof鏇村儚涓涓壒孌婄殑瀹忥紝瀹冩槸鍦ㄧ紪璇戦樁孌墊眰鍊肩殑銆備婦涓緥瀛愶細
聽聽聽 鍦ㄧ紪璇戦樁孌靛凡緇忚緲昏瘧涓猴細
聽cout<<4<<endl;
聽聽聽 榪欓噷鏈変釜闄烽槺錛岀湅涓嬮潰鐨勭▼搴忥細
聽int a = 0;
聽聽聽 杈撳嚭涓轟粈涔堟槸4錛?鑰屼笉鏄湡鏈涗腑鐨?錛?錛燂紵錛熷氨鍦ㄤ簬sizeof鍦ㄧ紪璇戦樁孌靛鐞嗙殑鐗規с傜敱浜巗izeof涓嶈兘琚紪璇戞垚鏈哄櫒鐮侊紝鎵浠izeof浣滅敤鑼冨洿鍐咃紝涔熷氨鏄?)閲岄潰鐨勫唴瀹逛篃涓嶈兘琚紪璇戯紝鑰屾槸琚浛鎹㈡垚綾誨瀷銆?鎿嶄綔絎﹁繑鍥炲乏鎿嶄綔鏁扮殑綾誨瀷錛屾墍浠=3鐩稿綋浜巌nt錛岃屼唬鐮佷篃琚浛鎹負錛?/font>
聽int a = 0;
聽聽聽 鎵浠ワ紝sizeof鏄笉鍙兘鏀寔閾懼紡琛ㄨ揪寮忕殑錛岃繖涔熸槸鍜屼竴鍏冩搷浣滅涓嶄竴鏍風殑鍦版柟銆?/font>
聽聽聽 緇撹錛氫笉瑕佹妸sizeof褰撴垚鍑芥暟錛屼篃涓嶈鐪嬩綔涓鍏冩搷浣滅錛屾妸浠栧綋鎴愪竴涓壒孌婄殑緙栬瘧棰勫鐞嗐?/font>
2銆乻izeof鐨勭敤娉?/font>
聽聽聽 sizeof鏈変袱縐嶇敤娉曪細
聽聽聽 錛?錛塻izeof(typename)
聽聽聽 鍙互鐪嬪嚭錛屽姞()鏄案榪滄紜殑閫夋嫨銆?/font>
聽聽聽 緇撹錛氫笉璁簊izeof瑕佸璋佸彇鍊鹼紝鏈濂介兘鍔犱笂()銆?/font>
錛?錛塁++鍥烘湁鏁版嵁綾誨瀷
聽聽聽 32浣岰++涓殑鍩烘湰鏁版嵁綾誨瀷錛屼篃灝眂har,short int(short),int,long int(long),float,double, long double
聽聽聽 鑰冭檻涓嬮潰鐨勪唬鐮侊細
聽cout<<sizeof(unsigned int) == sizeof(int)<<endl;聽// 鐩哥瓑錛岃緭鍑?1
聽聽聽 unsigned褰卞搷鐨勫彧鏄渶楂樹綅bit鐨勬剰涔夛紝鏁版嵁闀垮害涓嶄細琚敼鍙樼殑銆?/font>
聽聽聽 緇撹錛歶nsigned涓嶈兘褰卞搷sizeof鐨勫彇鍊箋?/font>
錛?錛夎嚜瀹氫箟鏁版嵁綾誨瀷
聽聽聽 typedef鍙互鐢ㄦ潵瀹氫箟C++鑷畾涔夌被鍨嬨傝冭檻涓嬮潰鐨勯棶棰橈細
聽typedef short WORD;
聽聽聽 緇撹錛氳嚜瀹氫箟綾誨瀷鐨剆izeof鍙栧肩瓑鍚屼簬瀹冪殑綾誨瀷鍘熷艦銆?/font>
錛?錛夊嚱鏁扮被鍨?/font>
聽聽聽 鑰冭檻涓嬮潰鐨勯棶棰橈細
聽int f1(){return 0;};
聽cout<<sizeof(f1())<<endl;聽// f1()榪斿洖鍊間負int錛屽洜姝よ璁や負鏄痠nt
聽聽聽 緇撹錛氬鍑芥暟浣跨敤sizeof錛屽湪緙栬瘧闃舵浼氳鍑芥暟榪斿洖鍊肩殑綾誨瀷鍙栦唬錛?/font>
4銆佹寚閽堥棶棰?/font>
聽聽聽 鑰冭檻涓嬮潰闂錛?br />聽
聽聽聽 鍙互鐪嬪埌錛屼笉綆℃槸浠涔堢被鍨嬬殑鎸囬拡錛屽ぇ灝忛兘鏄?鐨勶紝鍥犱負鎸囬拡灝辨槸32浣嶇殑鐗╃悊鍦板潃銆?/font>
聽聽聽 緇撹錛氬彧瑕佹槸鎸囬拡錛屽ぇ灝忓氨鏄?銆傦紙64浣嶆満涓婅鍙樻垚8涔熶笉涓瀹氾級銆?/font>
聽聽聽 欏轟究鍞у敡姝鍑犲彞錛孋++涓殑鎸囬拡琛ㄧず瀹為檯鍐呭瓨鐨勫湴鍧銆傚拰C涓嶄竴鏍風殑鏄紝C++涓彇娑堜簡妯″紡涔嬪垎錛屼篃灝辨槸涓嶅啀鏈塻mall,middle,big,鍙栬屼唬涔嬬殑鏄粺涓鐨刦lat銆俧lat妯″紡閲囩敤32浣嶅疄鍦板潃瀵誨潃錛岃屼笉鍐嶆槸c涓殑 segment:offset妯″紡銆備婦涓緥瀛愶紝鍋囧鏈変竴涓寚鍚戝湴鍧 f000:8888鐨勬寚閽堬紝濡傛灉鏄疌綾誨瀷鍒欐槸8888(16浣? 鍙瓨鍌ㄤ綅縐伙紝鐪佺暐孌?錛宖ar綾誨瀷鐨凜鎸囬拡鏄痜0008888(32浣嶏紝楂樹綅淇濈暀孌靛湴鍧錛屽湴浣嶄繚鐣欎綅縐?,C++綾誨瀷鐨勬寚閽堟槸f8888(32浣嶏紝鐩稿綋浜庢鍦板潃*16 + 浣嶇Щ錛屼絾瀵誨潃鑼冨洿瑕佹洿澶?銆?/font>
5銆佹暟緇勯棶棰?/font>
聽聽聽 鑰冭檻涓嬮潰闂錛?/font>
聽char a[] = "abcdef";
聽cout<<sizeof(a)<<endl;聽// 7
聽聽聽 鏁扮粍a鐨勫ぇ灝忓湪瀹氫箟鏃舵湭鎸囧畾錛岀紪璇戞椂緇欏畠鍒嗛厤鐨勭┖闂存槸鎸夌収鍒濆鍖栫殑鍊肩‘瀹氱殑錛屼篃灝辨槸7銆俢鏄緇存暟緇勶紝鍗犵敤鐨勭┖闂村ぇ灝忔槸鍚勭淮鏁扮殑涔樼Н錛屼篃灝辨槸6銆傚彲浠ョ湅鍑猴紝鏁扮粍鐨勫ぇ灝忓氨鏄粬鍦ㄧ紪璇戞椂琚垎閰嶇殑絀洪棿錛屼篃灝辨槸鍚勭淮鏁扮殑涔樼Н*鏁扮粍鍏冪礌鐨勫ぇ灝忋?/font>
聽聽聽 緇撹錛氭暟緇勭殑澶у皬鏄悇緇存暟鐨勪箻縐?鏁扮粍鍏冪礌鐨勫ぇ灝忋?/font>
聽聽聽 榪欓噷鏈変竴涓櫡闃憋細
聽int *d = new int[10];
聽cout<<sizeof(d)<<endl;聽// 4
聽聽聽 d鏄垜浠父璇寸殑鍔ㄦ佹暟緇勶紝浣嗘槸浠栧疄璐ㄤ笂榪樻槸涓涓寚閽堬紝鎵浠izeof(d)鐨勫兼槸4銆?/font>
聽聽聽 鍐嶈冭檻涓嬮潰鐨勯棶棰橈細
聽double* (*a)[3][6];
聽聽聽 a鏄竴涓緢濂囨殑瀹氫箟錛屼粬琛ㄧず涓涓寚鍚?double*[3][6]綾誨瀷鏁扮粍鐨勬寚閽堛傛棦鐒舵槸鎸囬拡錛屾墍浠izeof(a)灝辨槸4銆?/font>
聽聽聽 鏃㈢劧a鏄墽琛宒ouble*[3][6]綾誨瀷鐨勬寚閽堬紝*a灝辮〃紺轟竴涓猟ouble*[3][6]鐨勫緇存暟緇勭被鍨嬶紝鍥犳sizeof(*a)=3*6*sizeof(double*)=72銆傚悓鏍風殑錛?*a琛ㄧず涓涓猟ouble*[6]綾誨瀷鐨勬暟緇勶紝鎵浠izeof(**a)=6*sizeof(double*)=24銆?**a灝辮〃紺哄叾涓殑涓涓厓绱狅紝涔熷氨鏄痙ouble*浜嗭紝鎵浠izeof(***a)=4銆傝嚦浜?***a錛屽氨鏄竴涓猟ouble浜嗭紝鎵浠izeof(****a)=sizeof(double)=8銆?/font>
聽聽聽 鑰冭檻涓嬮潰鐨勯棶棰橈細
int Sum(int i[])
int main()
聽聽聽 Sum鐨勬湰鎰忔槸鐢╯izeof寰楀埌鏁扮粍鐨勫ぇ灝忥紝鐒跺悗姹傚拰銆備絾鏄疄闄呬笂錛屼紶鍏ヨ嚜鍑芥暟Sum鐨勶紝鍙槸涓涓猧nt 綾誨瀷鐨勬寚閽堬紝鎵浠izeof(i)=4錛岃屼笉鏄?4錛屾墍浠ヤ細浜х敓閿欒鐨勭粨鏋溿傝В鍐寵繖涓棶棰樼殑鏂規硶浣挎槸鐢ㄦ寚閽堟垨鑰呭紩鐢ㄣ?/font>
聽聽聽 浣跨敤鎸囬拡鐨勬儏鍐碉細
int main()
int Sum(int (&i)[6])
int main()
int Sum(int *i, unsigned int n)
int main()
7銆佸瓧絎︿覆鐨剆izeof鍜宻trlen
聽聽聽 鑰冭檻涓嬮潰鐨勯棶棰橈細
聽char a[] = "abcdef";
聽cout<<strlen(a)<<endl;聽聽// 6錛屽瓧絎︿覆闀垮害
聽a[1] = '\0';
聽聽聽 鑰冭檻涓嬮潰闂錛氾紙榛樿瀵歸綈鏂瑰紡錛?/font>
聽union u
聽union u2
聽union u3
聽cout<<sizeof(u)<<endl;聽聽// 8
聽聽聽 閮界煡閬搖nion鐨勫ぇ灝忓彇鍐充簬瀹冩墍鏈夌殑鎴愬憳涓紝鍗犵敤絀洪棿鏈澶х殑涓涓垚鍛樼殑澶у皬銆傛墍浠ュ浜巙鏉ヨ錛屽ぇ灝忓氨鏄渶澶х殑double綾誨瀷鎴愬憳a浜嗭紝鎵浠izeof(u)=sizeof(double)=8銆備絾鏄浜巙2鍜寀3錛屾渶澶х殑絀洪棿閮芥槸char[13]綾誨瀷鐨勬暟緇勶紝涓轟粈涔坲3鐨勫ぇ灝忔槸13錛岃寀2鏄?6鍛紵鍏抽敭鍦ㄤ簬u2涓殑鎴愬憳int b銆傜敱浜巌nt綾誨瀷鎴愬憳鐨勫瓨鍦紝浣縰2鐨勫榻愭柟寮忓彉鎴?錛屼篃灝辨槸璇達紝u2鐨勫ぇ灝忓繀欏誨湪4鐨勫鐣屼笂錛屾墍浠ュ崰鐢ㄧ殑絀洪棿鍙樻垚浜?6錛堟渶鎺ヨ繎13鐨勫鐣岋級銆?/font>
聽聽聽 緇撹錛氬鍚堟暟鎹被鍨嬶紝濡倁nion錛宻truct錛宑lass鐨勫榻愭柟寮忎負鎴愬憳涓榻愭柟寮忔渶澶х殑鎴愬憳鐨勫榻愭柟寮忋?/font>
聽聽聽 欏轟究鎻愪竴涓婥PU瀵圭晫闂錛?2鐨凜++閲囩敤8浣嶅鐣屾潵鎻愰珮榪愯閫熷害錛屾墍浠ョ紪璇戝櫒浼氬敖閲忔妸鏁版嵁鏀懼湪瀹冪殑瀵圭晫涓婁互鎻愰珮鍐呭瓨鍛戒腑鐜囥傚鐣屾槸鍙互鏇存敼鐨勶紝浣跨敤#pragma pack(x)瀹忓彲浠ユ敼鍙樼紪璇戝櫒鐨勫鐣屾柟寮忥紝榛樿鏄?銆侰++鍥烘湁綾誨瀷鐨勫鐣屽彇緙栬瘧鍣ㄥ鐣屾柟寮忎笌鑷韓澶у皬涓緝灝忕殑涓涓備緥濡傦紝鎸囧畾緙栬瘧鍣ㄦ寜2瀵圭晫錛宨nt綾誨瀷鐨勫ぇ灝忔槸4錛屽垯int鐨勫鐣屼負2鍜?涓緝灝忕殑2銆傚湪榛樿鐨勫鐣屾柟寮忎笅錛屽洜涓哄嚑涔庢墍鏈夌殑鏁版嵁綾誨瀷閮戒笉澶т簬榛樿鐨勫鐣屾柟寮?錛堥櫎浜唋ong double錛夛紝鎵浠ユ墍鏈夌殑鍥烘湁綾誨瀷鐨勫鐣屾柟寮忓彲浠ヨ涓哄氨鏄被鍨嬭嚜韜殑澶у皬銆傛洿鏀逛竴涓嬩笂闈㈢殑紼嬪簭錛?/font>
聽#pragma pack(2)
聽union u3
聽cout<<sizeof(u2)<<endl;聽聽// 14
聽聽聽 鐢變簬鎵嬪姩鏇存敼瀵圭晫鏂瑰紡涓?錛屾墍浠nt鐨勫鐣屼篃鍙樻垚浜?錛寀2鐨勫鐣屽彇鎴愬憳涓渶澶х殑瀵圭晫錛屼篃鏄?浜嗭紝鎵浠ユ鏃秙izeof(u2)=14銆?/font>
聽聽聽 緇撹錛欳++鍥烘湁綾誨瀷鐨勫鐣屽彇緙栬瘧鍣ㄥ鐣屾柟寮忎笌鑷韓澶у皬涓緝灝忕殑涓涓?/font>
聽聽聽 鍥犱負瀵歸綈闂浣跨粨鏋勪綋鐨剆izeof鍙樺緱姣旇緝澶嶆潅錛岀湅涓嬮潰鐨勪緥瀛愶細(榛樿瀵歸綈鏂瑰紡涓?
聽struct s1
聽struct s2
聽cout<<sizeof(s1)<<endl;聽// 24
聽聽聽 鍚屾牱鏄袱涓猚har綾誨瀷錛屼竴涓猧nt綾誨瀷錛屼竴涓猟ouble綾誨瀷錛屼絾鏄洜涓哄鐣岄棶棰橈紝瀵艱嚧浠栦滑鐨勫ぇ灝忎笉鍚屻傝綆楃粨鏋勪綋澶у皬鍙互閲囩敤鍏冪礌鎽嗘斁娉曪紝鎴戜婦渚嬪瓙璇存槑涓涓嬶細棣栧厛錛孋PU鍒ゆ柇緇撴瀯浣撶殑瀵圭晫錛屾牴鎹笂涓鑺傜殑緇撹錛宻1鍜宻2鐨勫鐣岄兘鍙栨渶澶х殑鍏冪礌綾誨瀷錛屼篃灝辨槸double綾誨瀷鐨勫鐣?銆傜劧鍚庡紑濮嬫憜鏀炬瘡涓厓绱犮?br />聽聽聽 瀵逛簬s1錛岄鍏堟妸a鏀懼埌8鐨勫鐣岋紝鍋囧畾鏄?錛屾鏃朵笅涓涓┖闂茬殑鍦板潃鏄?錛屼絾鏄笅涓涓厓绱燿鏄痙ouble綾誨瀷錛岃鏀懼埌8鐨勫鐣屼笂錛岀1鏈鎺ヨ繎鐨勫湴鍧鏄?浜嗭紝鎵浠琚斁鍦ㄤ簡8錛屾鏃朵笅涓涓┖闂插湴鍧鍙樻垚浜?6錛屼笅涓涓厓绱燾鐨勫鐣屾槸4錛?6鍙互婊¤凍錛屾墍浠鏀懼湪浜?6錛屾鏃朵笅涓涓┖闂插湴鍧鍙樻垚浜?0錛屼笅涓涓厓绱燿闇瑕佸鐣?錛屼篃姝eソ钀藉湪瀵圭晫涓婏紝鎵浠鏀懼湪浜?0錛岀粨鏋勪綋鍦ㄥ湴鍧21澶勭粨鏉熴傜敱浜巗1鐨勫ぇ灝忛渶瑕佹槸8鐨勫嶆暟錛屾墍浠?1-23鐨勭┖闂磋淇濈暀錛宻1鐨勫ぇ灝忓彉鎴愪簡24銆?br />聽聽聽 瀵逛簬s2錛岄鍏堟妸a鏀懼埌8鐨勫鐣岋紝鍋囧畾鏄?錛屾鏃朵笅涓涓┖闂插湴鍧鏄?錛屼笅涓涓厓绱犵殑瀵圭晫涔熸槸1錛屾墍浠鎽嗘斁鍦?錛屼笅涓涓┖闂插湴鍧鍙樻垚浜?錛涗笅涓涓厓绱燾鐨勫鐣屾槸4錛屾墍浠ュ彇紱?鏈榪戠殑鍦板潃4鎽嗘斁c錛屼笅涓涓┖闂插湴鍧鍙樻垚浜?錛屼笅涓涓厓绱燿鐨勫鐣屾槸8錛屾墍浠鎽嗘斁鍦?錛屾墍鏈夊厓绱犳憜鏀懼畬姣曪紝緇撴瀯浣撳湪15澶勭粨鏉燂紝鍗犵敤鎬葷┖闂翠負16錛屾濂芥槸8鐨勫嶆暟銆?/font>
聽聽聽 榪欓噷鏈変釜闄烽槺錛屽浜庣粨鏋勪綋涓殑緇撴瀯浣撴垚鍛橈紝涓嶈璁や負瀹冪殑瀵歸綈鏂瑰紡灝辨槸浠栫殑澶у皬錛岀湅涓嬮潰鐨勪緥瀛愶細
聽struct s1
聽struct s2
聽struct s3
聽struct s4
聽cout<<sizeof(s1)<<endl;聽// 8
聽聽聽 s1鍜宻2澶у皬铏界劧閮芥槸8錛屼絾鏄痵1鐨勫榻愭柟寮忔槸1錛宻2鏄?錛坉ouble錛夛紝鎵浠ュ湪s3鍜宻4涓墠鏈夎繖鏍風殑宸紓銆?/font>
聽聽聽 鎵浠ワ紝鍦ㄨ嚜宸卞畾涔夌粨鏋勪綋鐨勬椂鍊欙紝濡傛灉絀洪棿绱у紶鐨勮瘽錛屾渶濂借冭檻瀵歸綈鍥犵礌鏉ユ帓鍒楃粨鏋勪綋閲岀殑鍏冪礌銆?/font>
10銆佷笉瑕佽double騫叉壈浣犵殑浣嶅煙
聽聽聽 鍦ㄧ粨鏋勪綋鍜岀被涓紝鍙互浣跨敤浣嶅煙鏉ヨ瀹氭煇涓垚鍛樻墍鑳藉崰鐢ㄧ殑絀洪棿錛屾墍浠ヤ嬌鐢ㄤ綅鍩熻兘鍦ㄤ竴瀹氱▼搴︿笂鑺傜渷緇撴瀯浣撳崰鐢ㄧ殑絀洪棿銆備笉榪囪冭檻涓嬮潰鐨勪唬鐮侊細
聽struct s1
聽struct s2
聽struct s3
聽struct s4
聽cout<<sizeof(s1)<<endl;聽聽// 24
聽聽聽 鍙互鐪嬪埌錛屾湁double瀛樺湪浼氬共娑夊埌浣嶅煙錛坰izeof鐨勭畻娉曞弬鑰冧笂涓鑺傦級錛屾墍浠ヤ嬌鐢ㄤ綅鍩熺殑鐨勬椂鍊欙紝鏈濂芥妸float綾誨瀷鍜宒ouble綾誨瀷鏀懼湪紼嬪簭鐨勫紑濮嬫垨鑰呮渶鍚庛?/font>
聽聽聽 絎竴嬈″啓涓滆タ錛屽彂鐜拌嚜宸辯殑琛ㄨ揪鑳藉姏澶樊浜嗭紝鐭ラ亾鐨勪笢瑗胯涓嶅嚭鏉ワ紝璁插嚭鏉ョ殑涓滆タ鍒漢涔熺湅涓嶆噦錛屽懙鍛點傚彟澶栵紝C99鏍囧噯鐨剆izeof宸茬粡鍙互宸ヤ綔鍦ㄨ繍琛屾椂浜嗭紝鎵撶畻鏈榪戞壘涓敮鎸丆99鐨勭紪璇戝櫒鐮旂┒涓涓嬨?/font>
class A聽
{
public:
聽A();
聽void f1();
聽virtual void f2();
聽virtual void f3()=0;
聽virtual ~A();
class B : public A聽
{
public:
聽B();
聽void f1();
聽void f2();
聽void f3();
聽virtual ~B();
涓誨嚱鏁?
int main(int argc, char* argv[])
{
聽A *m_j=new B();
聽m_j->f1();
聽m_j->f2();
聽m_j->f3();
聽delete m_j;
聽return 0;
}
璋冪敤m_j->f1();浼氬幓璋冪敤A綾諱腑鐨刦1(),瀹冩槸鍦ㄦ垜浠啓濂戒唬鐮佺殑鏃跺欏氨浼氬畾濂界殑.
涔熷氨鏄牴鎹畠鏄敱A綾誨畾涔夌殑,榪欐牱灝辮皟鐢ㄨ繖涓被鐨勫嚱鏁?
f2()鏄櫄鍑芥暟.
璋冪敤m_j->f2();浼氳皟鐢╩_j涓埌搴曚繚瀛樼殑瀵硅薄涓?瀵瑰簲鐨勮繖涓嚱鏁?榪欐槸鐢變簬new鐨凚
瀵硅薄.
f3()涓巉2()涓鏍?鍙槸鍦ㄥ熀綾諱腑涓嶉渶瑕佸啓鍑芥暟鐜板疄.
]]>
涓鑸敤鐨勬渶澶氱殑鎬曟槸char * 浜嗭紝琛ㄧず鐨勬槸鎸囧悜C椋庢牸瀛椾覆鐨勬寚閽堛傞偅 char **p 鍙堟槸浠涔堝憿錛焢琛ㄧず鐨勬槸鎸囧悜鎸囬拡鐨勬寚閽堛傛瘮濡傦細
//鍒涘緩p
char **p=new char*[100];聽
for(int i=0;i<100;i++)
{
聽聽聽p[i]=new char[30];聽 // p[i]涓烘寚鍚戞渶緇堝瓧涓茬殑鎸囬拡錛岃瀛椾覆闀垮害涓?0錛岃宲 鍙堟槸鎸囧悜p[i]鐨勬寚閽?br />}
//閲婃斁絀洪棿
for(int i=0;i<100;i++)
{
聽聽聽delete p[i];
}
delete p;
]]>
]]>
銆奀++紼嬪簭璁捐璇█銆嬶細濡傛灉浣犲彧涔頒竴鏈珻++涔︼紝榪欐湰灝辨槸浣犵殑閫夋嫨錛屼綔鑰匓jarne灝辨槸璁╀綘鍋氬嚭榪欐牱閫夋嫨鐨勫叏閮ㄧ悊鐢憋紝娌℃湁浜鴻兘姣斾粬鏇翠簡瑙d粈涔堟牱鎵嶆槸鐪熸鐨勪嬌鐢–++緙栫▼浜嗭紝鏈変漢璇村埌榪欐湰涔﹁璦鏅︽訂錛屾垨鑰呭涓庡垵瀛﹁呮涔︿笉閫傚悎錛屽姝よ瘎璁烘垜棰囦笉浠ヤ負鐒訛紝鎴戠湅鐨勬槸涓枃鐗堬紝璧風爜鍦ㄦ垜鐪嬫潵璇█鎻忓彊闈炲父鍒頒綅錛屾垜鍠滄榪欐牱鐨勬妧鏈弿鍙欓鏍箋傚叏涔︾殑鏍稿績灝辨槸鍛婅瘔浣犲浣曞幓鐢ㄦ紜殑瑙傚康緙栧啓姝g‘鐨凜++鐨勪唬鐮併傚己鐑堟帹鑽愩?br />
銆奀++璇█璁捐涓庢紨鍖栥嬶細榪欐湰涔︿篃鏄垜鍚屾椂鎷ユ湁涓嫳涓ょ増鐨勪袱鏈功涔嬩竴錛堝彟澶栦竴鏈槸銆婅璁℃ā寮忋嬶級銆傚鏋滃湪寰楀埌涓婇潰鐨勯偅鏈功涔嬪悗浣犻渶瑕佺浜屾湰錛岄偅涔堝湪鎴戠湅鏉ヨ繖灝辨槸浣犵殑閫夋嫨錛屼綔鑰呭悓鏍鋒槸Bjarne錛屼粬灝嗗湪榪欐湰涔︿腑鍛婅瘔浣燙++鐨勮搗婧愪笌鍙戝睍錛岃璦鍘熷垯涓庢湰璐紝鍚勭鐗規у姞鍏ョ殑鐞嗙敱鍜岃冮噺錛屼互鍙婂嚑涔庝竴鍒囧叧浜嶤++鏈夎叮鐨勬晠浜嬨傛垜闃呰榪囦腑鑻變袱鐗堬紝閮芥槸寮虹儓鎺ㄨ崘銆?br />
銆奀++鏍囧噯紼嬪簭搴撱嬶細鍦ˋMAZON涓婇潰鍏充簬C++涔︾睄璇勮鏈涓虹伀鏆寸殑涓鏈傚叏涔﹀浜庢爣鍑嗙▼搴忓簱鐨勪粙緇嶅彲璋撴繁鍏ユ祬鍑猴紝鑰屼笖鍏ㄤ功閮芥槸浠庡疄闄呰繍鐢ㄥ嚭鍙戯紝涔︿腑渚嬪瓙綆鍗曞嵈闈炲父璇存槑闂錛屽姞涓婁竴浜涘浘琛ㄧ殑闄堝垪錛屼嬌鍏舵蹇靛崄鍒嗘竻鏅幫紝鑰屼笖浠庢墜鍐屽拰瀛︿範涓ゆ柟闈㈢湅閮芥湁鍏跺瓨鍦ㄤ環鍊箋傚己鐑堟帹鑽愩?br />
銆奅FFECTIVE C++ 涓枃鐗堛嬶細鏃犻』澶氳錛屽湪浠諱綍C++涔︾睄鎺ㄨ崘鐩綍涓兘鍙互鎵懼埌榪欐湰涔︾殑韜獎錛岀洓鍚嶄箣涓嬪繀鏃犺櫄澹備富瑕佸己璋冪殑鏄繍鐢–++鐨勫悇縐嶇壒鎬х殑鏃跺欐墍蹇呴』娉ㄦ剰鐨勫湴鏂癸紝浠ュ強涓浜涙瘮杈冮氱敤鐨勮璁℃墜孌點傚叾鐭皬綺炬倣鐨勮璦鑷劧闈炲父閫傚悎蹇妭濂忕殑鐜頒唬椋庢牸錛屼釜浜哄氨鍗佸垎鍠滄Meyer鐨勫啓浣滄柟寮忋傚己鐑堟帹鑽愩?br />
銆奙ORE EFFECTIVE C++ 涓枃鐗堛嬶細鍋氫負涓婃湰涔︾殑濮愬綃囷紝涓鏍風殑鍐欎綔椋庢牸錛屼竴鏍風殑鍐欎綔鐩殑銆傚彧鏄釜浜鴻涓哄拰鍏跺濮愮浉姣旓紝瀛樺湪宸窛錛屼富瑕佹槸淇℃伅閲忔病鏈夈奅FFECTIVE C++ 涓枃鐗堛嬮偅涔堝ぇ錛屼富瑕佽鍒頒簡涓浜汣++鐨勮璁℃儻鐢ㄦ墜娉曘傛帹鑽愩?br />
銆奀++ PRIMER 涓枃鐗堛嬶細鍚屾牱鏄嚭鑷ぇ甯堜箣鎵嬶紝浣滆匧IPPMAN錛屼綔涓烘棭鏈烠++緙栬瘧鍣ㄧ殑瀹炵幇鑰呬箣涓錛屽涓嶤++鐨勪簡瑙d互鍙婅濡備綍璁哄簭閮芥湁鑷繁鐨勭嫭鍒拌瑙c傚仛涓篊++鐨勭櫨縐戝叏涔﹀拰銆奀++紼嬪簭璁捐璇█銆嬫湁鐫涓鏍風殑鍦頒綅銆備絾鏄墠鑰呮洿寮鴻皟鐨勬槸C++鐨勮娉曞拰鍏惰涔夛紝鑰屽悗鑰呭垯鏄互濡備綍鐢–++榪涜鍚堢悊璁捐鍋氫負鎻忓彊鐨勪腑蹇冦傚叏涔︽瀯鎬濆崄鍒嗗閥濡欙紝涔︾殑涓寮濮嬪氨鐩存帴榪涘叆C++鐨勪富棰橈紝鍓嶉潰浜旂珷閮界敤綾昏璁′竴涓暟鎹粨鏋勶紝璁╄鑰呭畬鍏ㄦ槑鐧戒簡鍚勭鐢ㄦ埛瀹氫箟綾誨瀷鎵浠h〃鐨勬娊璞¤兘鍔涳紝鐒跺悗鐩存帴榪涘叆絎叚绔犳爣鍑嗗簱涓殑瀹瑰櫒綾伙紝榪欐牱鐨勮璁¤璇昏呭崄鍒嗘竻妤氱殑寤虹珛瀹瑰櫒鍜岀被榪欎袱涓狢++涓崄鍒嗛噸瑕佺殑姒傚康銆傝繖鏍風殑璁捐閽堝鏈変竴瀹氬熀紜鐨凜++璇昏呮潵璇村彲浠ヨ鏄潪甯告湁鏁堟灉鐨勩備絾鏄浜庡垵瀛﹁呮潵璇達紝榪欑‘瀹炰笉鏄竴鏈悎閫傜殑涔︾睄錛屽洜涓轟竴涓婃潵澶鐨勫悕璇嶄細鎶婂垰鍒氭帴瑙++鐨勪漢鍚撶潃鐨勩傛帹鑽愩?br />
銆奀++娌夋濆綍銆嬶細闈炲父鏈夌壒鐐圭殑涓鏈功錛屽叏涔﹀亣璁捐鑰呭凡緇忛氭檽C++璇█錛岄噸鐐瑰憡璇夎鑰匔++鐨勬蹇典互鍙婁竴浜汣++鐨勮璁℃墜孌碉紝姣斿鐢–++鍒板簳涓轟粈涔堜細姣擟鎴栬呭叾浠栬繃紼嬭璦鏇村ソ錛燂紙涔︿腑緇欏嚭鐨勭瓟妗堟槸錛屽洜涓哄彧鏈夊璞℃墠鏈夎兘鍔涗繚鎸佷竴瀹氱殑鐘舵侊紝鑰岀畻娉曟病鏈夎繖鏍風殑鑳藉姏錛夛紝濡備綍榪涜鎶借薄鏁版嵁綾誨瀷鐨勭▼搴忚璁★紝濡備綍鐞嗚В澶氭侊紝濡備綍閫氳繃浠g悊闅愯棌緇ф壙錛屽浣曡繘琛屽紩鐢ㄦ妧鏁幫紝涓轟簡鏁堢巼濡備綍榪涜緙撴椂鎷瘋礉錛屼互鍙婃ā鏉挎妧鏈槸濡備綍鍙戝睍婕旇繘鏈鍚庢瀯鎴愭垚STL搴撶殑銆傞槄璇繪劅瑙夊拰銆奀++紼嬪簭璁捐璇█銆嬩竴鏍鳳紝鎬濇兂鎬ч潪甯稿己錛岃榪欐牱鐨勪功寰堢瘡錛岃剳瀛愬繀欏諱竴鐩存濊冮棶棰橈紝鎬濊冧綔鑰呴噷闈㈡彁鍑虹殑闂鍜屼粬鎻愬嚭鐨勮В鍐蟲柟寮忋傝繖鏈功鏈澶х殑鐗圭偣鏄潪甯哥洿鎺ョ殑鎶奀++璇█鐨勬牳蹇冩毚闇插嚭鏉?----涓夌鎶借薄妯″瀷鍜屾瀬鍏惰璦璁炬柦鏈韓瀵硅繖涓夌鎶借薄妯″瀷鐨勬敮鎸併傝屻奀++娌夋濆綍銆嬬粰鎴戠殑鏇存繁灞傛濊冩槸浠涔堟墠鏄繍鐢–++鏈鍚堢悊鐨勬柟寮忋傛帹鑽愩?br />
銆奀++ STL涓枃鐗堛嬶細寰堟湸瀹烇紝涓嶈姳淇忥紝浣嗘槸浠峰煎緢楂樸備釜浜鴻涓哄叾涓昏浠峰間綋鐜板湪浠ヤ笅鍑犱釜鏂歸潰錛?錛屽浜嶴TL鐨勫疄鐜板叧閿甶terator涓鑸兘浣跨敤浜嗕袱縐嶆柟寮忔弿鍙欙紝涓縐嶆瘮杈冭佸紡鐨勫嚱鏁版柟娉曪紝涓縐嶆槸鏂扮殑 traits鎶宸э紝榪欐牱璇昏呭彲浠ラ潪甯告竻妤氱殑鐭ラ亾鎶鏈殑婕旇繘銆?錛屾彁渚涗簡涓涓猄TL LITE鐗堟湰錛岄槄璇昏繖鏍風殑浠g爜瀵硅嚜宸辯殑鎻愰珮闈炲父澶с?錛屼功涓彁渚涚殑嫻嬭瘯妯″潡瀵逛簬璇昏呮潵璇翠篃鏄潪甯告湁鐨勪竴绔狅紝瀵逛簬鎯蟲墿灞昐TL鐨勶紝鍙互鎸夌収涓婇潰鎻愪緵鐨勬柟娉曟祴璇曡嚜宸辯殑STL緇勪歡銆傜己鐐癸細瑁呰姣旇緝綺楃硻錛屼笌澶у笀涔嬩綔鐨勫湴浣嶄笉鐩哥О銆傛帹鑽?br />
銆奀++ PRIMER PLUS 涓枃鐗堛嬶細涓鏈濇兂鎬т笉鏄緢寮猴紝鎶宸фт笉鏄緢寮虹殑涔︼紝浣嗘槸瀵逛簬鍒濆鑰呮潵璇撮潪甯稿悎閫傜殑涔︺傚叾涓澶氳搴忔柟寮忛兘鍜屽叿浣撳寲錛屾諱綋鏉ヨ錛岃繖鏈功鏄垜鐪嬭繃鐨凜++涔︾睄閲岄潰鏈鍚堥傚垵瀛﹁呯殑銆傛帹鑽愩?br />
銆婃繁搴︽帰绱++瀵硅薄妯″瀷銆嬶細榪欎篃鏄竴鏈瘮杈冪壒鍒殑涔︼紝鍛婅瘔浣犵紪璇戝櫒鏄浣曞畨鎺掑鐞嗗璞$殑鍐呭瓨絀洪棿鐨勶紝浠ュ強涓浜汷O鐗規ф槸濡備綍瀹炵幇鐨勩備笉璁や負榪欐槸涓鏈珻++蹇呴』璇葷墿錛岀畻鏄鍚庤鐗╁簲璇ユ瘮杈冨悎閫傚惂錛屽洜涓烘湁鏃墮棿浜嗚ВC++鐨凮O瀹炵幇榪樹笉濡傝姳鐐規椂闂存悶娓呮OO鐞嗚鐨勬湰璐ㄦ蹇碉細type theory銆傛帹鑽愩?br />
銆奀++璁捐鏂版濈淮鈥斺旀硾鍨嬬紪紼嬩笌璁捐妯″紡涔嬪簲鐢ㄣ嬶細鍙皳C++涓殑濂囦功銆傝繖鏍風殑涓鏈功錛屽緢闅捐浜哄仛鍑烘紜殑璇勪環涓庢帹鑽愭寚鏁幫紙灝ゅ叾鏄互鎴戣繖涓疄鐢ㄥ拰浜虹敓鏈氨搴旇浜箰涓轟漢鐢熻鐨勪漢鏉ヨ~錛氾級錛屽洜涓哄叏涔︽墍浠h〃鐨勬濇兂鍓嶅崼鍒頒簡鏈夌偣涓嶅垏瀹為檯鐨勫湴姝ワ紝妯″紡+娉涘瀷鈥斿涔堥珮闆呯殑緇勫悎銆傛垜涓漢鐨勮鐐規槸錛屽彧鏈変竴閮ㄥ垎浜洪渶瑕侀槄璇繪涔︼紝浠栦滑灝辨槸鎵璋撶殑real c++ fans錛屾殏涓斾笉鎻怌++鏈韓鏄惁閬囧埌浜嗗洶闅撅紝灝卞叾涔︿腑鎵浠h〃鐨勮璁℃濇兂錛屽浜嶤++娌℃湁涓鐐規劅鎯呯殑紼嬪簭鍛橈紙鎰熸儏灝辨槸浠ョ埍濂戒負鍩虹錛岃屼笉鏄互鏀掗挶涓哄墠鎻愶級錛屾垜鎯沖浜庤繖鏍風殑璁捐鎶鏈諱細鏈夋檿鐨勬劅瑙夛紝鑰屼竴鑸▼搴忓憳澶氬崐閮戒笉浼氬枩嬈㈣繖鏍風殑鎰熻~錛氾級銆傛帹鑽愩?br />
銆婂璞℃彮縐橈細Java銆丒iffel鍜孋++銆嬶細浠庝功鍚嶅氨鍙互鐪嬪嚭榪欐湰涔︿笉浠呬粎鍜孋++鏈夊叧緋匯傚彲浠ヨ鍏ㄤ功灝辨槸瀵笴++鐨勪竴嬈℃壒鍒ゅ惂錛堜功涔熻搗婧愪笌浣滆呯殑涓綃囨壒鍒++鐨勬枃绔狅級銆傛湁鏃跺欏惉鍚彟澶栦竴縐嶅0闊沖鑷繁淇濇寔娓呴啋鐨勫ご鑴戞槸闈炲父鏈夊府鍔╃殑錛屽寰呬竴涓漢錛屽寰呬竴鏈功浠ュ強瀵瑰緟涓闂ㄧ▼搴忚璁¤璦閮芥槸濡傛銆傝繖鏈功濂借薄涓嶆槸寰堢伀錛屽ぇ姒傝窡鍏跺浼犱笉鏄緢鍒頒綅錛屾垨鑰呭悓鑳藉悓鏃朵簡瑙h繖涓夐棬璇█騫舵瘮杈冨叧蹇冭繖浜涜璦娣卞眰嬈$殑浼樼暐鐨勮鑰呮瘮杈冨皯鏈夊叧緋誨惂錛屽湪鎴戠湅鏉ヨ繖鏈功鍖呭惈浜嗚澶氬璞′笌綾誨瀷鏂歸潰鐨勭悊璁猴紝鏈涓哄嚭褰╃殑灝辨槸浣滆呮姄浣廈jarne鐨勨滃湪C++涓竴涓被灝辨槸涓涓被鍨嬧濊繖鏍風殑鈥滈敊璇濊█璁虹嫚鎵圭殑璁鴻瘉榪囩▼銆傜湅榪欐湰涔﹀彟澶栦竴涓ソ澶勬槸鑳芥暀浼氬ぇ瀹惰濡備綍鍘誨悎鐞嗙殑杈╅┏鑷繁鐨勫鎵媬錛氾級銆傛帹鑽愩?br />
銆婂ぇ瑙勬āC++紼嬪簭璁捐銆嬶細涔﹀湪鎵嬩笂寰堜箙浜嗭紝鍙竴鐩存病鏈変粩緇嗙湅錛岃繖涔熸槸璇勮涔嬪墠蹇呴』璇存槑鐨勩傛諱綋鐪嬫潵涔︿腑娑夊強鐨勫緢澶氫笢瑗塊兘椴滆浜庡叾浠栬鏈備笉綆MAZON涓婄殑璇勮鏄惁鏄繖鏈功姣旇緝榪囨椂錛岃搗鐮佸畠浠嬬粛鐨勮澶氬涓庢垜鏉ヨ閮芥槸鎴戞墍涓嶇煡閬撲笉浜嗚В鐨勶紝鍒漢璇磋繃鏃舵槸浠栫殑浜嬫儏銆傝屾垜錛岃繕鏄帹鑽愩?br />
銆奡TL鍜屾硾鍨嬬紪紼嬨嬶細闅懼緱鐨勪竴鏈叧浜庢硾鍨嬬紪紼嬬殑鐞嗗康涔︾睄錛屽悓鏍蜂篃鏄綔涓烘墜鍐屽拰瀛︿範涓ょ敤錛屼絾鏄叾鎵嬪唽涓嶆槸浣跨敤鎵嬪唽錛岃屾槸姒傚康鎵嬪唽錛屽浜庤璁¤嚜宸辯殑STL緇勪歡錛岃繖鏈功鏈夐潪甯稿ソ鐨勫府鍔╋紝铏界劧緗戜笂鏈夌瘒STL鐨勬枃妗o紝鍏朵腑鐨?0%鍐呭鍜岃繖鏈功闆峰悓錛屼絾姝や功浠嶄笉澶卞彲璇繪с傛帹鑽愩?br />
銆奀++緙栫▼鎬濇兂 絎簩鐗堛嬶細闈炲父涓鑸殑涔︼紝鏄殑榪欏氨鏄垜瀵硅繖鏈緢澶氫漢濂変負鍚嶈憲鐨勮瘎璁猴紝鑷充簬涓轟粈涔堟槸榪欐牱鐨勮瘎璁猴紝鎴栬呬綘涓嶇浉淇℃垜璇寸殑鏄瑙傝瘽錛屽湪浣犱拱浜嗕箣鍚庣湅瀹屽氨鐭ラ亾浜嗐備竴鑸?br />
銆奅ssential C++涓枃鐗堛嬶細鎬繪劅瑙夎繖鏈功瀹氫綅涓嶆槸寰堟竻妤氾紝鍥犱負瀵逛簬鍒濆鑰呮潵璇村叾寮濮嬪氨娑夊強浜嗗お澶氱殑鍚嶈瘝錛屽垵瀛﹁呯湅榪欐湰涔︼紝鍑犱箮灝變笉瑕佹寚鏈涜兘寰堝ソ鐨勫叆闂ㄣ傝屽浜庤繘闃惰呮潵璇達紝鍏跺唴瀹瑰茍鏃犳柊鎰忥紝瀵逛簬C++楂樻墜鏉ヨ錛岃繖鏍風殑灝忚鏈紝鏍規湰灝辨病鏈夐槄璇葷殑蹇呰錛屼篃璁告槸LIPPMAN+JJHOU鐨勭洓鍚嶅惂錛屼絾鎴戣寰楄繖嬈$畻鏄湁铏氬+浜唦錛氾級銆備竴鑸?br />
銆奡TL婧愮爜鍓栨瀽銆嬶細渚疭IR鐨勫ぇ闄嗕袱鏈憲浣滀箣涓錛屼絾鍦ㄦ垜蹇冧腑鍏惰川閲忓ソ璞″茍涓嶅寰堝浜鴻鐨勯偅鏍峰ソ錛屽氨鍚岀被浣滃搧銆奀++ STL涓枃鐗堛嬬浉姣旇緝鍐呭鐣ョ幇鍗曡杽錛屽茍涓斾笁绔犱箣鍚庡緢澶氫笢瑗塊兘緇欎漢浠ュ爢鐮岀殑鎰熻錛岃屼笖澶ч儴鍒嗙簿褰╃殑鏉愭枡閮藉嚭鑷奡TL鍜屾硾鍨嬬紪紼嬨嬩竴涔︼紝緇欎漢鎰熻涔︿腑渚疭IR鑷繁鐨勪笢瑗垮茍涓嶅錛屼絾絎簩绔犲浜庡唴瀛樼鐞嗘湁寰堝ソ鐨勮鍙欒〃鐜幫紝騫朵笖瑁呰綺捐壇錛屽挨鍏舵槸閭d簺鍥炬洿鏄警SIR鐨勬嬁鎵嬪ソ鎴忥紝浣嗘諱綋鎰熻鏈夌偣鍗庤屼笉瀹炪備竴鑸?br />
鍚庨潰鍒楀嚭涓ゆ湰涓嶆帹鑽愮殑錛屽叿浣撳師鍥犱篃灝變笉鍐嶅垎鏋愩?br />
銆婇珮璐ㄩ噺紼嬪簭璁捐鎸囧崡--C++/C璇█銆嬶紝
銆奀++緙栫爜瑙勮寖銆?br />
鍙﹀涓ゆ湰甯歌鐨凜++涔︾睄錛?br />
銆奅xceptional C++涓枃鐗堛嬶紝銆奙ore Exceptional C++涓枃鐗堛嬫垜鏈漢騫舵病鏈夐槄璇昏繃錛屼絾鍏跺悕澹頒笉灝忥紝鑰屼笖鍔犱箣鏇劇粡緇欐涔︿綔鑰匟erb Sutter閫氶偖浠剁殑緇忓巻錛岄偅縐嶈冭檻鍒版椂宸兘涓嶅埌24涓皬鏃剁殑鍥炰俊鐜囦互鍙婂湪淇′腑鑰愬績鐨勫鎶鏈瑙g殑鎬佸害錛屽悓鏍峰悜澶у鎺ㄨ崘榪欎袱鏈功錛屽洜涓哄湪鎴戠湅鏉erb Sutter鑳藉姏鏃犻』鑰冭檻鍔犱笂榪欐牱寰呬漢鐨勬佸害錛屽叾浣滃搧鐞嗘墍鍊煎緱澶у闃呰銆?br />
鏄殑錛屼笂闈㈠氨鏄垜澶у崐騫存潵鐪嬭繃鐨凜++鐨勪功綾嶏紝鑲畾涓嶅皯浜鴻鍢茬瑧鎴戠殑涓功鍛嗗瓙浜唦錛氾級錛屽叾瀹炴垜紜疄灝辨槸涓涓功鍛嗗瓙錛岃嚦浜庢槸鍚﹂渶瑕佺湅榪欎箞澶氫功錛屾垜涓漢鎰忚鏄笉闇瑕侊紝涓嶇劧鎴戣繕緇欏嚭鎺ㄨ崘絳夌駭騫蹭粈涔堬紵閫夋嫨鑷繁闇瑕佺殑灝辨槸鏈濂姐傚紩鐢ㄦ浘緇忔湁浜鴻鍒扮殑---璇勪功鍏跺疄灝辨槸涓滃浜洪ギ姘達紝鍐鋒殩鑷煡鈥濈殑浜嬫儏銆傜湡姝g殑涔﹁瘎鍦ㄥ摢閲岋紵鍚勮嚜鐨勫績閲屻?br />
]]>
鏂規硶涓錛?br />int *p;
void swap(int *x,int *y)
{
聽cout<<"swap("<<*x<<","<<*y<<")"<<endl;
聽p=x;
聽x=y;
聽y=p;
聽cout<<"swap("<<*x<<","<<*y<<")"<<endl;
}
int main()
{
聽int a=10;
聽int b=2;
聽int *x=&a;
聽int *y=&b;
聽cout<<*x<<" "<<*y<<endl;
聽swap(x,y);
聽cout<<*x<<" "<<*y<<endl;
}
榪愮畻緇撴灉鍗存槸錛?br />10聽 2
10聽 2聽聽 //swap
2聽聽聽 10 //swap
10聽 2
浠庣粨鏋滀笂鍙互鐪嬪嚭swap()浠嶇劧娌℃湁璧峰埌鏁堟灉
鎺ョ潃鐢?amp;鏉ュ仛瀹為獙
鏂規硶浜岋細
void swap(int &x,int &y)
{
聽cout<<"swap("<<x<<","<<y<<")"<<endl;
聽int temp;
聽temp=x;
聽x=y;
聽y=temp;
聽cout<<"swap("<<x<<","<<y<<")"<<endl;
}
int main()
{
聽
聽int a=10;
聽int b=2;
聽int &x=a;
聽int &y=b;
聽cout<<x<<" "<<y<<endl;
聽swap(x,y);
聽cout<<x<<" "<<y<<endl;
}
榪愮畻緇撴灉鏄細
10聽 2
10聽 2聽聽 //swap
2聽聽聽 10 //swap
2聽聽聽 10
浠庣粨鏋滀笂鍙互鐪嬪嚭swap()璧峰埌棰勫畾鏁堟灉
鐢╥nt *&鍋氬疄楠?br />鏂規硶涓夛細
int *p;
void swap(int *&x,int *&y)
{
聽cout<<"swap("<<*x<<","<<*y<<")"<<endl;
聽p=x;
聽x=y;
聽y=p;
聽cout<<"swap("<<*x<<","<<*y<<")"<<endl;
}
int main()
{
聽int a=10;
聽int b=2;
聽int *x=&a;
聽int *y=&b;
聽cout<<*x<<" "<<*y<<endl;
聽swap(x,y);
聽cout<<*x<<" "<<*y<<endl;
}聽
榪愮畻緇撴灉鏄細
10聽 2
10聽 2聽聽 //swap
2聽聽聽 10 //swap
2聽聽聽 10
浠庣粨鏋滀笂鍙互鐪嬪嚭swap()璧峰埌棰勫畾鏁堟灉
鏈鍚庯紝鍐嶆鐢╥nt *鍋氬疄楠岋紝娉ㄦ剰swap()閮ㄥ垎鐨勫彉鍖?br />鏂規硶鍥涳細
void swap(int *x,int *y)
{
聽int temp=0;
聽cout<<"swap("<<*x<<","<<*y<<")"<<endl;
聽temp=*x;
聽*x=*y;
聽*y=temp;
聽cout<<"swap("<<*x<<","<<*y<<")"<<endl;
}
int main()
{
聽
聽int a=10;
聽int b=2;
聽int *x=&a;
聽int *y=&b;
聽cout<<*x<<" "<<*y<<endl;
聽swap(x,y);
聽cout<<*x<<" "<<*y<<endl;
}
榪愮畻緇撴灉鏄細
10聽 2
10聽 2聽聽 //swap
2聽聽聽 10 //swap
2聽聽聽 10
浠庣粨鏋滀笂鍙互鐪嬪嚭swap()璧峰埌棰勫畾鏁堟灉
=============================================================
濂斤紝鐜板湪鏉ヨ涓嬩負浠涔堜嬌鐢ㄦ柟娉曚竴鍜屾柟娉曞洓錛屽悓鏍鋒槸浼犻掔殑鍦板潃錛屼負浠涔堢粨鏋滀細涓嶅悓錛熺瓟妗堝氨鍦╯wap(int *x,int *y)涓娿傚湪main()閲岃櫧鐒舵湁x鍜寉鎸囬拡錛屼絾鏄紝鍦╯wap()閲岀殑x,y鍗存槸涓存椂鍙橀噺銆傞鍏堣鏄庤繖涓鐐規槸鏈夊ソ澶勭殑銆傛垜浠潵緇х畫鍒嗘瀽浠ヤ笅浠g爜鍐呭錛?br />聽錛堜竴錛?br />聽聽 p=x;聽聽//璇ユ柟娉曠湅浼兼垜浠笇鏈涢氳繃浜ゆ崲涓存椂鎸囬拡x,y鎵鎸囧悜鐨勫湴鍧錛屾潵杈懼埌浜ゆ崲main()鍑芥暟涓疄鍙倄,y鎵鎸?br />聽聽 x=y;聽聽//鍚戝湴鍧錛屼粠鑰岃揪鍒頒氦鎹㈡暟鍊肩殑鏁堟灉銆傝櫧鐒墮昏緫涓婃槸姝g‘鐨勶紝紼嬪簭緙栬瘧涔熼氳繃錛屼絾鏄紝鍗村拷鐣ヤ簡聽聽
聽聽聽y=p; //涓涓潪甯擱噸瑕佺殑鍐呭錛岄偅灝辨槸swap()涓殑x,y浠嶇劧鏄復鏃剁殑錛岃櫧鐒惰紼嬪簭紜疄鍦╯wap涓殏鏃朵氦鎹?br />聽聽聽聽聽聽聽聽聽聽 //浜唜,y鎵鎸囧悜鐨勫湴鍧錛?u>浣嗘槸瀹為檯涓妜,y鎵鎸囧悜鍦板潃鐨勬暟鍊間粛鐒舵病鏈夎鏀瑰彉錛?
聽聽聽temp=*x;聽聽聽聽 //x,y鎵鎸囧悜鍦板潃鐨勬暟鍊鹼紝鍗蟲敼鍙榤ain()鍑芥暟涓疄鍙傛寚閽坸,y鎵鎸囧悜鍦板潃鐨勬暟鍊箋傛墍浠ワ紝鍗充嬌
聽聽 *x=*y;聽聽聽聽聽聽聽聽 //swap()鍑芥暟璋冪敤瀹屽悗鍐呴儴涓存椂x,y娑堝け錛屼絾瀹冧滑鎵鍋氱殑宸ヤ綔宸茬粡瀹屾垚錛氭敼鍙樻暟鍊鹼紒
聽聽 *y=temp;
鍚岀悊錛屽浜庢柟娉曚笁鍜屾柟娉曚簩錛岄氳繃int & 鍜宨nt *&涔熸槸鍋氫簡綾諱技鏂規硶鍥涚殑宸ヤ綔錛屾墍浠ヨ兘姝g‘swap鎵闇鍐呭銆?br />鑷充簬璇翠嬌鐢ㄥ摢縐嶆柟娉曪紝灝辨槸浠佽呰浠佺殑浜嬩簡銆?br />
]]>
1銆佷粈涔堟槸sizeof
聽
聽cout<<sizeof(int)<<endl;聽// 32浣嶆満涓奿nt闀垮害涓?
聽cout<<sizeof(1==2)<<endl;聽// == 鎿嶄綔絎﹁繑鍥瀊ool綾誨瀷錛岀浉褰撲簬 cout<<sizeof(bool)<<endl;
聽cout<<1<<endl;
聽cout<<sizeof(a=3)<<endl;
聽cout<<a<<endl;
聽cout<<4<<endl;
聽cout<<a<<endl;
聽
聽聽聽 錛?錛塻izeof(object)
聽聽聽 涔熷氨鏄瀵硅薄浣跨敤sizeof錛屼篃鍙互鍐欐垚sizeof object 鐨勫艦寮忋備緥濡傦細
聽聽聽 涔熷氨鏄綾誨瀷浣跨敤sizeof錛屾敞鎰忚繖縐嶆儏鍐典笅鍐欐垚sizeof typename鏄潪娉曠殑銆備笅闈婦鍑犱釜渚嬪瓙璇存槑涓涓嬶細
聽int i = 2;
聽cout<<sizeof(i)<<endl;聽// sizeof(object)鐨勭敤娉曪紝鍚堢悊
聽cout<<sizeof i<<endl;聽// sizeof object鐨勭敤娉曪紝鍚堢悊
聽cout<<sizeof 2<<endl;聽// 2琚В鏋愭垚int綾誨瀷鐨刼bject, sizeof object鐨勭敤娉曪紝鍚堢悊
聽cout<<sizeof(2)<<endl;聽// 2琚В鏋愭垚int綾誨瀷鐨刼bject, sizeof(object)鐨勭敤娉曪紝鍚堢悊
聽cout<<sizeof(int)<<endl;// sizeof(typename)鐨勭敤娉曪紝鍚堢悊
聽cout<<sizeof int<<endl;聽// 閿欒錛佸浜庢搷浣滅錛屼竴瀹氳鍔?)
3銆佹暟鎹被鍨嬬殑sizeof
澶у皬鍒嗗埆鏄細1錛?錛?錛?錛?錛?, 10銆?/font>
聽typedef long DWORD;
聽cout<<(sizeof(short) == sizeof(WORD))<<endl;聽// 鐩哥瓑錛岃緭鍑?
聽cout<<(sizeof(long) == sizeof(DWORD))<<endl;聽// 鐩哥瓑錛岃緭鍑?
聽double f2(){return 0.0;}
聽void f3(){}
聽cout<<sizeof(f2())<<endl;聽// f2()榪斿洖鍊間負double錛屽洜姝よ璁や負鏄痙ouble
聽cout<<sizeof(f3())<<endl;聽// 閿欒錛佹棤娉曞void綾誨瀷浣跨敤sizeof
聽cout<<sizeof(f1)<<endl;聽聽// 閿欒錛佹棤娉曞鍑芥暟鎸囬拡浣跨敤sizeof聽聽聽
聽cout<<sizeof*f2<<endl;聽聽// *f2錛屽拰f2()絳変環錛屽洜涓哄彲浠ョ湅浣渙bject錛屾墍浠ユ嫭鍙蜂笉鏄繀瑕佺殑銆傝璁や負鏄痙ouble
聽cout<<sizeof(string*)<<endl;聽// 4
聽cout<<sizeof(int*)<<endl;聽// 4
聽cout<<sizof(char****)<<endl;聽// 4
聽int b[20] = {3, 4};
聽char c[2][3] = {"aa", "bb"};
聽
聽cout<<sizeof(b)<<endl;聽// 20*4
聽cout<<sizeof(c)<<endl;聽// 6
聽
聽
聽cout<<sizeof(a)<<endl;聽聽// 4
聽cout<<sizeof(*a)<<endl;聽聽// 72
聽cout<<sizeof(**a)<<endl;聽// 24
聽cout<<sizeof(***a)<<endl;聽// 4
聽cout<<sizeof(****a)<<endl;聽// 8
6銆佸悜鍑芥暟浼犻掓暟緇勭殑闂銆?/font>
#include <iostream>
using namespace std;
{
聽int sumofi = 0;
聽for (int j = 0; j < sizeof(i)/sizeof(int); j++) //瀹為檯涓婏紝sizeof(i) = 4
聽{
聽聽sumofi += i[j];
聽}
聽return sumofi;
}
{
聽int allAges[6] = {21, 22, 22, 19, 34, 12};
聽cout<<Sum(allAges)<<endl;
聽system("pause");
聽return 0;
}
int Sum(int (*i)[6])
{
聽int sumofi = 0;
聽for (int j = 0; j < sizeof(*i)/sizeof(int); j++) //sizeof(*i) = 24
聽{
聽聽sumofi += (*i)[j];
聽}
聽return sumofi;
}
{
聽int allAges[] = {21, 22, 22, 19, 34, 12};
聽cout<<Sum(&allAges)<<endl;
聽system("pause");
聽return 0;
}
聽聽聽 鍦ㄨ繖涓猄um閲岋紝i鏄竴涓寚鍚慽[6]綾誨瀷鐨勬寚閽堬紝娉ㄦ剰錛岃繖閲屼笉鑳界敤int Sum(int (*i)[])澹版槑鍑芥暟錛岃屾槸蹇呴』鎸囨槑瑕佷紶鍏ョ殑鏁扮粍鐨勫ぇ灝忥紝涓嶇劧sizeof(*i)鏃犳硶璁$畻銆備絾鏄湪榪欑鎯呭喌涓嬶紝鍐嶉氳繃sizeof鏉ヨ綆楁暟緇勫ぇ灝忓凡緇忔病鏈夋剰涔変簡錛屽洜涓烘鏃跺ぇ灝忔槸鎸囧畾涓?鐨勩?br />浣跨敤寮曠敤鐨勬儏鍐靛拰鎸囬拡鐩鎬技錛?/font>
{
聽int sumofi = 0;
聽for (int j = 0; j < sizeof(i)/sizeof(int); j++)
聽{
聽聽sumofi += i[j];
聽}
聽return sumofi;
}
{
聽int allAges[] = {21, 22, 22, 19, 34, 12};
聽cout<<Sum(allAges)<<endl;
聽system("pause");
聽return 0;
}
聽聽聽 榪欑鎯呭喌涓媠izeof鐨勮綆楀悓鏍鋒棤鎰忎箟錛屾墍浠ョ敤鏁扮粍鍋氬弬鏁幫紝鑰屼笖闇瑕侀亶鍘嗙殑鏃跺欙紝鍑芥暟搴旇鏈変竴涓弬鏁版潵璇存槑鏁扮粍鐨勫ぇ灝忥紝鑰屾暟緇勭殑澶у皬鍦ㄦ暟緇勫畾涔夌殑浣滅敤鍩熷唴閫氳繃sizeof姹傚箋傚洜姝や笂闈㈢殑鍑芥暟姝g‘褰㈠紡搴旇鏄細
#include <iostream>
using namespace std;
{
聽int sumofi = 0;
聽for (int j = 0; j < n; j++)
聽{
聽聽sumofi += i[j];
聽}
聽return sumofi;
}
{
聽int allAges[] = {21, 22, 22, 19, 34, 12};
聽cout<<Sum(i, sizeof(allAges)/sizeof(int))<<endl;
聽system("pause");
聽return 0;
}
聽char b[20] = "abcdef";
聽string s = "abcdef";
聽cout<<sizeof(a)<<endl;聽聽// 7錛屽瓧絎︿覆瀹歸噺
聽cout<<strlen(b)<<endl;聽聽// 6錛屽瓧絎︿覆闀垮害
聽cout<<strlen(b)<<endl;聽聽// 20錛屽瓧絎︿覆瀹歸噺
聽cout<<sizeof(s)<<endl;聽聽// 12, 榪欓噷涓嶄唬琛ㄥ瓧絎︿覆鐨勯暱搴︼紝鑰屾槸string綾葷殑澶у皬
聽cout<<strlen(s)<<endl;聽聽// 閿欒錛乻涓嶆槸涓涓瓧絎︽寚閽堛?/font>
聽cout<<strlen(a)<<endl;聽聽// 1
聽cout<<sizeof(a)<<endl;聽聽// 7錛宻izeof鏄亽瀹氱殑
聽聽聽 strlen鏄鎵句粠鎸囧畾鍦板潃寮濮嬶紝鍒板嚭鐜扮殑絎竴涓?涔嬮棿鐨勫瓧絎︿釜鏁幫紝浠栨槸鍦ㄨ繍琛岄樁孌墊墽琛岀殑錛岃宻izeof鏄緱鍒版暟鎹殑澶у皬錛屽湪榪欓噷鏄緱鍒板瓧絎︿覆鐨勫閲忋傛墍浠ュ鍚屼竴涓璞¤岃█錛宻izeof鐨勫兼槸鎭掑畾鐨勩俿tring鏄疌++綾誨瀷鐨勫瓧絎︿覆錛屼粬鏄竴涓被錛屾墍浠izeof(s)琛ㄧず鐨勫茍涓嶆槸瀛楃涓茬殑闀垮害錛岃屾槸綾籹tring鐨勫ぇ灝忋俿trlen(s)鏍規湰灝辨槸閿欒鐨勶紝鍥犱負strlen鐨勫弬鏁版槸涓涓瓧絎︽寚閽堬紝濡傛灉鎯崇敤strlen寰楀埌s瀛楃涓茬殑闀垮害錛屽簲璇ヤ嬌鐢╯izeof(s.c_str())錛屽洜涓簊tring鐨勬垚鍛樺嚱鏁癱_str()榪斿洖鐨勬槸瀛楃涓茬殑棣栧湴鍧銆傚疄闄呬笂錛宻tring綾繪彁渚涗簡鑷繁鐨勬垚鍛樺嚱鏁版潵寰楀埌瀛楃涓茬殑瀹歸噺鍜岄暱搴︼紝鍒嗗埆鏄疌apacity()鍜孡ength()銆俿tring灝佽浜嗗父鐢ㄤ簡瀛楃涓叉搷浣滐紝鎵浠ュ湪C++寮鍙戣繃紼嬩腑錛屾渶濂戒嬌鐢╯tring浠f浛C綾誨瀷鐨勫瓧絎︿覆銆?/font>
8銆佷粠union鐨剆izeof闂鐪媍pu鐨勫鐣?/font>
聽{
聽聽double a;
聽聽int b;
聽};
聽{
聽聽char a[13];
聽聽int b;
聽};
聽{
聽聽char a[13];
聽聽char b;
聽};
聽cout<<sizeof(u2)<<endl;聽聽// 16
聽cout<<sizeof(u3)<<endl;聽聽// 13
聽union u2
聽{
聽聽char a[13];
聽聽int b;
聽};
聽{
聽聽char a[13];
聽聽char b;
聽};
聽#pragma pack(8)
聽cout<<sizeof(u3)<<endl;聽聽// 13
9銆乻truct鐨剆izeof闂
聽{
聽聽char a;
聽聽double b;
聽聽int c;
聽聽char d;聽
聽};
聽{
聽聽char a;
聽聽char b;
聽聽int c;
聽聽double d;
聽};
聽cout<<sizeof(s2)<<endl;聽// 16
聽{
聽聽char a[8];
聽};
聽{
聽聽double d;
聽};
聽{
聽聽s1 s;
聽聽char a;
聽};
聽{
聽聽s2 s;
聽聽char a;聽
聽};
聽cout<<sizeof(s2)<<endl; // 8
聽cout<<sizeof(s3)<<endl; // 9
聽cout<<sizeof(s4)<<endl; // 16;
聽{
聽聽int i: 8;
聽聽int j: 4;
聽聽double b;
聽聽int a:3;
聽};
聽{
聽聽int i;
聽聽int j;
聽聽double b;
聽聽int a;
聽};
聽{
聽聽int i;
聽聽int j;
聽聽int a;
聽聽double b;
聽};
聽{
聽聽int i: 8;
聽聽int j: 4;
聽聽int a:3;
聽聽double b;
聽};
聽cout<<sizeof(s2)<<endl;聽聽// 24
聽cout<<sizeof(s3)<<endl;聽聽// 24
聽cout<<sizeof(s4)<<endl;聽聽// 16
]]>
void key(char *p)
{
聽p="ac";
}
int main()
{
聽char *p="d";
聽cout<<p<<endl;
聽key(p);
聽cout<<p<<endl;
聽delete p;
}
//璇ョ▼搴忓彧杈撳嚭 "d"
/***********************/
/*******姝g‘紼嬪簭*******/
void key(char *p)
{
聽strcpy(p,"ac");
}
int main()
{
聽char *p=new char[5];
聽strcpy(p,"e");
聽cout<<p<<endl;
聽key(p);
聽cout<<p<<endl;
聽delete[] p;
}
鍏堣緭鍑?"e",鍐嶈緭鍑?ac"
/**********************/
==================================
絎竴涓▼搴忥細
char *p="d";//p鎸囧悜甯擱噺瀛楃涓?br />聽cout<<p<<endl;
聽key(char *p) //璇曞浘鏀瑰彉p錛岃娉曟棤璇紝浣嗛昏緫涓嶅厑璁革紝鏁呯紪璇戞紜紝榪愯閿欒銆傚湪紼嬪簭緙栬瘧鐨勬椂鍊欙紱 void key(char *p)綾諱技琚В閲婃垚錛歷oid key(const char *p){p="ac";}
絎簩涓▼搴忥細
char *p = new char[100];//p鎸囧悜鏁扮粍鐨勯鍦板潃錛屽唴瀹瑰彲鍙?br />聽strcpy(p, "d");//鍐呭鍙樹負鈥渄鈥?br />聽cout<<p<<endl;
聽key(p);//鍐呭鍙樹負鈥渁c鈥濓紝strcpy錛堬級涓嶆敼鍙樺畠鐨勫湴鍧錛屽彧鏀瑰彉p鎵鎸囩殑鏁扮粍鐨勫唴瀹癸紝鏁呰緭鍑轟負ac
C椋庢牸瀛椾覆涓嶆敮鎸佺洿鎺ヨ祴鍊鹼紝瑕佷嬌鐢╯trcpy()銆?br />
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
聽 聽MessageBox(NULL,TEXT("Hello,World!"),TEXT("My First Windows聽 App"), MB_OK|MB_ICONQUESTION);
聽聽 return 0;
}
|