锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
1銆佸ご鏂囦歡鏄?span lang="EN-US">C鏍煎紡錛屼絾鏄嚱鏁板疄鐜版槸C++鐨勩?span lang="EN-US">
瑙e喅鍔炴硶錛氬湪.h鏂囦歡涓坊鍔?/span>
#if __cplusplus extern "C" { #endif /* 浠g爜琛?span lang="EN-US"> */
#if __cplusplus
}
#endif
2銆佸ご鏂囦歡鐨勫嚱鏁板0鏄庡弬鏁扮被鍨嬩笌cpp鏂囦歡涓殑鍑芥暟瀹氫箟涓嶄竴鑷?span lang="EN-US">
璋冩暣涓轟竴鑷村嵆鍙?span lang="EN-US">
鏍規嵁涓婇潰鐨勫垎鏋愶紝瀵逛簬闇瑕佸疄鐜板己綾昏仛錛屼綆鑰﹀悎鐨勭▼搴忚岃█錛屽叾鏈緇堢洰鐨勪笌綾誨皝瑁呯殑鐩殑鍩烘湰涓鑷淬傚湪鑰冭檻濡備綍瀹炵幇鏃訛紝鍙互鍊熺敤OOP鐨勬柟娉曘?/p>
鍏蜂綋褰掔撼濡備笅錛?/p>
1銆佸疄鐜版暟鎹殑灝佽
浣跨敤struct灝嗕竴緇勮涓虹殑鍏辯敤瀵硅薄鎵撳寘銆?/p>
2銆佸皢妯″潡鐙珛鍖栦負鏂囦歡
鈶?nbsp; 褰㈠紡涓?/p>
闇瑕佷緵澶栭儴浣跨敤鐨凙PI鎺ュ彛鏀懼湪.h涓紝妯″潡鍐呴儴鍑芥暟鏀懼湪.c鏂囦歡涓?/p>
鈶?nbsp; 瀹炵幇涓?/p>
鏂囦歡涓殑鍑芥暟鐨勬搷浣滃璞″彧鑳芥槸榪欎釜struct涓殑鎴愬憳銆備笉瑕佽鏂囦歡澶栫殑鍏ㄥ眬鍙橀噺鏉ュ喅瀹氭ā鍧楄涓虹殑鎵ц璺緞銆傝繖鏍風殑鐩殑鍦ㄤ簬妯″潡鐨勮涓哄彧鑳界敱妯″潡鑷韓鐨勭姸鎬佸喅瀹氥?/p>
3銆佸璞?妯″潡)鐨勭姸鎬佹帶鍒?/strong>
妯″潡鐨勭姸鎬佷篃搴旇浣跨敤涓撻棬鐨勬搷浣滃嚱鏁拌繘琛屽皝瑁呫?/p>
鐩殑鏄槻姝㈠叏灞鍙橀噺婊ョ敤錛屼嬌淇敼鐘舵佺殑琛屼負瀹規槗琚洃瑙嗕笌鎺у埗銆?/p>
瀹為檯緙栫▼涓紝浣跨敤鍏ㄥ眬鍙橀噺鏂瑰紡鐨勭姸鎬佹帶鍒跺満鍚堬紝鐘舵佺殑鍙樻洿緇忓父琚仐婕忋傚己鍒朵嬌鐢ㄥ嚱鏁板鐘舵佺殑榪涘叆涓庨鍑鴻繘琛屾爣璇嗭紝闃叉閬楀繕銆?/p>
4銆佽涓烘帶鍒?/strong>
灝嗘墽琛岀殑鏌愪竴琛屼負鐨勫垽鏂潯浠惰繘琛屽皝瑁呫?nbsp;
鍦ㄥ鏉傜郴緇熶腑錛屼竴涓涓虹殑鎵ц騫朵笉鏄兘澶熺敱鍗曚竴鐨凟vent灝辮兘瑙﹀彂銆傝屾槸闇瑕佽澶氱姸鎬佹潯浠剁殑鎴愮珛銆傝繖縐嶆儏鍐典笅錛岄渶瑕佹妸琛屼負鐨勬墽琛屽喅絳栨彁鐐間負鍐崇瓥鍑芥暟綈囷紝闆嗕腑綆$悊銆?/p>
鍚勪釜鐘舵佷綔涓鴻緭鍏ワ紝鎺у埗鍑芥暟鏄搷搴斿嚱鏁幫紝杈撳嚭鐨勬槸鍝嶅簲琛屼負銆?nbsp;
綆鑰岃█涔嬪氨鏄璇歌憶浜繖涓笓瀹跺幓鍒ゆ柇銆愬ぉ鏃躲戙併愬湴鍒┿戙併愪漢鍜屻戣繖浜涙潯浠舵槸涓嶆槸閮藉叿澶囦簡錛屾槸涓嶆槸鍙互鎿嶅浼欎簡銆傚鏋滆繕娌℃湁錛岄偅涓瓟鏄庡厔灝辮鍐崇瓥鏄笉鏄紲炲紕楝間竴涓嬶紝鍊熺偣涓滈鎴栨槸鍙戞尌鑷韓鎵嶈兘閫犲嚭鏈ㄧ墰嫻侀┈鏉ュ府甯繖銆?/p>
濂藉錛?/p>
鈶?nbsp; 鍑忓皯浠g爜鍐椾綑銆?/p>
闇瑕佹坊鍔犲彉鏇寸殑鍦哄悎錛屽彧闇瑕佹洿鏀硅繖涓涓喅絳栫被鍗沖彲銆?/p>
鈶?nbsp; 闆嗕腑浼樺娍鍏靛姏姝肩伃鏁屼漢鐨勬湁鐢熷姏閲忋?/p>
鎬葷粨錛?/strong>
涓婇潰鐨勬柟娉曠殑鏍規湰鐩殑鍦ㄤ簬錛氶檺鍒惰涓猴紝灝嗗叾鍥哄畾鍦ㄤ竴緇勬暟鎹殑闆嗗悎涓娿傚噺灝戣﹀悎鎬с?/p>
涓婇潰鐨勬柟娉曞彧鏄粠紼嬪簭緇撴瀯涓婃帶鍒跺疄鐜版柟寮忥紝閬垮厤鍑洪敊鐨勫彲鑳姐備笉鍙兘瑙e喅鎵鏈夐棶棰樸備絾涓昏鐨勮В鍐蟲柟鍚戞槸錛岄噰鐢∣OP鐨勬濇兂錛岄檺鍒惰涓猴紝閬垮厤鍏ㄥ眬鍙橀噺婊″ぉ椋炪?/p>
鍦ㄥ凡緇忓垎閰嶇殑鍔ㄦ佸唴瀛樼┖闂翠笂浣跨敤
new
鍒涘緩鏂扮殑瀵硅薄銆傝繖縐嶅艦寮忕殑
new
琛ㄨ揪寮忓氨鏄?/span>
placement new expression
銆?/span>
2.聽聽聽聽聽聽聽聽聽
浣跨敤鏍煎紡
new(place_address) type_specifier
鈶?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽聽聽聽
place_address
錛屽凡緇忓紑杈熺┖闂寸殑鎸囬拡
鈶?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽聽聽聽
type_specifier
錛屾柊鍒嗛厤瀵硅薄鐨勭被鍨?/span>
3.聽聽聽聽聽聽聽聽聽
瀹炰緥
int *pBuff聽 = new int[1000];
long *pb聽聽 = new(pBuff) long;聽聽聽聽 //
鍗沖皢
pBuff
鍐呯殑涓鍧楀ぇ灝忎負
sizeof(long)
鐨勫唴瀛樺尯鍩熺殑
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //
浣跨敤鏉冪粰
pb
鎸囧悜鐨勫璞°?/span>
4.聽聽聽聽聽聽聽聽聽
浣跨敤娉ㄦ剰
鈶?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽聽聽聽
闇瑕?/span>
#include<new>
鈶?span style="FONT: 7pt 'Times New Roman'">聽聽聽聽聽聽聽
涓嶉渶瑕?/span>
delete pb
錛?/span>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //
鍥犱負騫舵病鏈変負
pb
寮杈熶竴鍧楀唴瀛樸?/span>
pb
鎸囧悜鐨勫璞″彧鏈変嬌鐢ㄦ潈
濡傛灉浣跨敤
delete []pBuff;聽聽聽聽聽聽聽聽聽聽聽聽聽 //
鎰忓懗鐫鍏跺唴瀛樼┖闂翠笂鐨勬墍鏈夊璞¢兘琚?/span>
kill
銆?/span>
涓涓敱
C++
緙栬瘧鐨勭▼搴忓崰鐢ㄧ殑鍐呭瓨鍒嗕負浠ヤ笅鍑犱釜閮ㄥ垎
1
銆佹爤鍖猴紙
stack
錛?br />聽聽聽
鐢辯紪璇戝櫒鑷姩鍒嗛厤閲婃斁
錛?/font>
瀛樻斁鍑芥暟鐨勫弬鏁板鹼紝灞閮ㄥ彉閲忕殑鍊肩瓑銆傚叾鎿嶄綔鏂瑰紡綾諱技浜?/span>
鏁版嵁緇撴瀯
涓殑鏍堛?br />
2
銆佸爢鍖猴紙
heap
錛?/span>
聽聽聽鐢辯▼搴忓憳鍒嗛厤閲婃斁錛?/span>
鑻ョ▼搴忓憳涓嶉噴鏀撅紝紼嬪簭緇撴潫鏃跺彲鐢?/span>
OS
鍥炴敹
銆傚瓨鏀劇殑鏄姩鎬佸垎閰嶇殑鏁版嵁瀵硅薄銆?/font>
娉ㄦ剰瀹冧笌鏁版嵁緇撴瀯涓殑鍫嗘槸涓ゅ洖浜嬶紝鍒嗛厤鏂瑰紡鍊掓槸綾諱技浜庨摼琛ㄣ?/span>
3
銆佸叏灞鍖猴紙闈欐佸尯錛夛紙
static
錛?/span>
聽聽聽鍏ㄥ眬鍙橀噺鍜岄潤鎬佸彉閲忕殑瀛樺偍鏄斁鍦ㄤ竴鍧楃殑錛屽垵濮嬪寲鐨勫叏灞鍙橀噺鍜岄潤鎬佸彉閲忓湪涓鍧楀尯鍩燂紝
鏈垵濮嬪寲鐨勫叏灞鍙橀噺鍜屾湭鍒濆鍖栫殑闈欐佸彉閲忓湪鐩擱偦鐨勫彟涓鍧楀尯鍩熴?/span>
紼嬪簭緇撴潫鍚庣敱緋葷粺閲婃斁
4
銆佹枃瀛楀父閲忓尯
聽
聽聽聽
甯擱噺瀛楃涓插氨鏄斁鍦ㄨ繖閲岀殑銆?/span>
紼嬪簭緇撴潫鍚庣敱緋葷粺閲婃斁
5
銆佺▼搴忎唬鐮佸尯
聽聽聽瀛樻斁鍑芥暟浣撶殑浜岃繘鍒朵唬鐮併?/span>
1 銆佷笌鏁版嵁瀵硅薄鐩稿叧鐨勫兼湁涓ょ錛?/span>
n聽聽聽聽聽聽聽聽 鏁版嵁鍊?/span>
鍗沖瓨鍌ㄥ湪鏌愪釜鍐呭瓨鍦板潃涓殑鏁版嵁鏈韓銆?/span>
n聽聽聽聽聽聽聽聽 鍦板潃鍊?/span>
鍗寵鏁版嵁瀵硅薄鐨勫瓨鍌ㄤ綅緗?/span>
2 銆?/span> lvalue 涓?/span> rvalue
n聽聽聽聽聽聽聽聽 lvalue 閫氬父鎸囩殑鏄彲浠ュ鍧騫朵笖鍙互瀵硅鍦板潃鍐呭瀛樺偍鐨勫璞¤繘琛屽啓鎿嶄綔 (writeable) 銆傚彲浠ョ湅浣?/span> location value 銆?/span>
n聽聽聽聽聽聽聽聽 rvalue 閫氬父鎸囩殑鏄偅浜涜兘澶熸彁渚涙暟鎹肩殑鏁版嵁錛屽嵆浠庢煇涓?/span> mem 涓鍑虹殑 value 銆傚彲浠ヨ涓烘槸 read value 銆?/span>
3 銆佹枃瀛楀父閲忥紙 literate const 錛変笌鍙橀噺錛?/span> variable 錛?/span>
n聽聽聽聽聽聽聽聽 鏂囧瓧甯擱噺
鍗抽氬父鎸囩殑鏁板瓧錛?/span> 1 錛?/span> 200 錛屻傘傘傦級銆傝鏁版嵁瀵硅薄鍒嗛厤鍦ㄥ父閲忓唴瀛樺尯鍩燂紝涓嶅彲浠ュ鍧錛屼篃灝辨槸涓嶅彲浠ラ氳繃鎿嶄綔瀹冪殑鍦板潃鍊兼潵鍙樻洿鐨勬暟鎹璞°傚洜姝や笉鑳戒綔涓?/span> lvalue 鍑虹幇錛屽彧鑳芥槸 rvalue
n聽聽聽聽聽聽聽聽 鍙橀噺
鍙互瀵誨潃銆傞氳繃鍙橀噺鍚嶅氨鍙互鏀瑰彉璇ユ暟鎹湴鍧鐨勫唴瀹廣傛墍浠ュ彲浠ユ垚涓?/span> lvalue 銆?/span> rvalue
鎬葷粨錛?/span>
u聽聽聽聽聽聽 lvalue 錛氬彲浠ラ氳繃鏁版嵁瀵硅薄鑷韓鍦板潃鏉ユ敼鍙樻暟鎹璞″肩殑鏁版嵁瀵硅薄錛岃姹傝瀵硅薄鍙互瀵誨潃銆?/span>
u聽聽聽聽聽聽 rvalue 錛氳兘澶熸彁渚涙暟鎹璞℃湰韜暟鍊肩殑鏁版嵁瀵硅薄錛岃瀵硅薄涓嶄竴瀹氬彲浠ュ鍧
u聽聽聽聽聽聽 鐢辨搷浣滅鍐沖畾闇瑕佷粈涔堢被鍨嬬殑鏁版嵁鍊肩被鍨?/span>
娉ㄦ剰錛?/span>
lvalue 涓殑 鈥檒鈥?/span> 涓嶆槸 left 鐨勬剰鎬濓紝鏃笉鏄寚鍦ㄦ搷浣滅宸﹁竟銆傚悓鏍?/span> 鈥檙鈥?/span> 涓嶆槸 right
聽聽聽聽聽聽 渚嬪錛?/span>
x++;
聽聽聽聽聽聽 ++x;
聽聽聽聽聽聽 涓や釜琛ㄨ揪寮忓潎瑕佹眰 x 鏄?/span> lvalue 銆?/span>
浣跨敤涓句緥錛?/span>
鈶?聽聽聽聽 0=1 錛?/span> 聽聽聽聽聽聽聽聽聽聽聽 //error, 0 涓嶆槸 lvalue
鈶?聽聽聽聽 x+0.1*y=z;聽聽聽聽 //error, 鍦ㄨ祴鍊艱繍綆楃宸﹁竟鐨勫簲璇ヤ負 lvalue
鈶?聽聽聽聽 const int size=4;
size=10;聽聽聽聽聽聽聽聽 //error, 鏁版嵁瀵硅薄鍦板潃鍐呭涓嶅彲浠ユ敼鍙橈紝鍗充笉鏄?/span> writeable