锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鍦ㄨ璁洪潤鎬佺粦瀹氫笌鍔ㄦ佺粦瀹氬墠錛岄渶瑕佸厛闃愭槑涓や釜姒傚康錛氶潤鎬佺被鍨嬩笌鍔ㄦ佺被鍨嬨?/p>
榪欎袱涓蹇靛彧鍦ㄥ彉閲忔槸瀛樺湪緇ф壙鍏崇郴鐨勭被鐨勫璞$殑鎸囬拡鎴栬呭紩鐢ㄦ椂鎵嶆湁鎰忎箟錛岄潤鎬佺被鍨嬫槸浣犲0鏄庣殑綾誨瀷錛岀紪璇戞椂鍗沖彲鐭ワ紱鑰屽姩鎬佺被鍨嬫槸鎸囪繖涓寚閽堟垨鑰呭紩鐢ㄥ疄闄呮寚鍚戠殑瀵硅薄鐨勭被鍨嬶紝榪愯鏃舵墠鍙煡銆備婦鍑犱釜渚嬪瓙錛?br>鍋囪D鏄粠B鍏湁緇ф壙鐨?br> B *bp1; // 闈欐佺被鍨?B* 鍔ㄦ佺被鍨嬫棤 闈欐佺粦瀹氱殑鍚箟涓哄嚱鏁扮殑琛屼負(fù)鍙栧喅浜庡璞$殑闈欐佺被鍨嬶紝鑰屽姩鎬佺粦瀹氱殑鍚箟涓哄嚱鏁扮殑琛屼負(fù)鍙栧喅浜庡璞$殑鍔ㄦ佺被鍨嬶紝鏈変互涓嬪師鍒欙細(xì) Scott Meyers鍦ㄣ奅ffctive C++銆?nd Edition涓璉tem 37~38鍗蟲槸闃愯堪榪欎釜闂鐨勶紝澶у鍙互鍙傝冧竴涓嬶紝涓嬮潰閫氳繃涓孌靛皬紼嬪簭鍋氫釜璇存槑銆?br> 涓轟粈涔堜細(xì)鏈夎繖鏍風(fēng)殑緇撴灉鍛紵緇撳悎涓婇潰鐨?鏉″師鍒欐潵鐪嬶紝B涓湁涓や釜鐗堟湰鐨勯噸杞絝unc鍑芥暟錛屼竴涓負(fù)铏氬嚱鏁幫紝涓涓負(fù)闈炶櫄鍑芥暟錛孌涓噸瀹氫箟浜嗙戶鎵胯屾潵鐨刦unc()錛屼絾鏄牴鎹師鍒?錛屽師鏈篃鍙互緇ф壙鑰屾潵鐨刦unc(double)涔熻D鑷繁瀹氫箟鐨刦unc()緇欒鐩栦簡錛屾崲璦涔嬶紝鐜板湪D涓彧鏈変竴涓猣unc()鍑芥暟銆傜敱浜巇鐨勯潤鎬佸拰鍔ㄦ佺被鍨嬪潎涓篋錛岃繍琛宒.func(2.3)鐨勬椂鍊欏彂鐜版牴鏈壘涓嶅埌瀹氫箟錛屽彧鑳界紪璇戞姤閿欍傜幇鍦ㄦ潵鐪媟b錛岀敱鍓嶆墍榪幫紝rb鐨勯潤鎬佺被鍨嬩負(fù)B錛屽姩鎬佺被鍨嬩負(fù)D錛屼簬鏄痳b.func()鏍規(guī)嵁鍔ㄦ佺粦瀹氳〃鐜頒負(fù)D::func()鐨勮涓猴紝rb.func(2.3)鏍規(guī)嵁闈欐佺粦瀹氳〃鐜頒負(fù)B::func(double)鐨勮涓恒?/p>
鎴戜滑鍙互鏉ョ寽鎯充互涓嬩負(fù)浠涔堜細(xì)鏈夎繖鏍風(fēng)殑浠g爜錛岃璁¤呭師鎰忓彲鑳芥槸鎯充粎閲嶅畾涔塮unc()鑰岀戶鎵縡unc(double)鐨勯粯璁よ涓猴紝鍙儨鐢變簬C++涓鐩栬鍒欙紝浜嬩笌鎰胯繚銆傛墍浠ュ綋娣風(fēng)敤铏氬嚱鏁頒笌閲嶈澆榪欎袱縐嶄笉鍚屾椂鏈熷喅瀹氱殑澶氭佹椂錛屼竴瀹氳灝忓績銆備粠OO璁捐鐨勮搴︽潵璇達(dá)紝铏氬嚱鏁板嚑涔庤偗瀹氭槸瑕佽緇ф壙綾婚噸鍐欑殑錛岃岄潪铏氬嚱鏁版槸緇濅笉搴旇琚噸瀹氫箟鐨勶紝鎵浠ュ綋浣犵殑璁捐涓嚭鐜伴噸杞藉嚱鏁頒笉鏄悓涓鴻櫄鍑芥暟鎴栬呴潪铏氬嚱鏁版椂錛屽氨瑕佸皬蹇冭鐩栭棶棰樹簡銆?/p>
鍏充簬鍑芥暟緙虹渷鍙傛暟闂錛屻奅ffective C++銆?nd Editon Item 38璁插緱寰堟竻妤氾紝榪欓噷灝變笉璧樿堪浜嗐?img src="http://www.shnenglu.com/CuteSoft_Client/CuteEditor/images/emsmile.gif" align=absMiddle border=0> 寮曠敤鏄粈涔堬紵榪欎釜闂鍏跺疄騫朵笉瀹規(guī)槗鍥炵瓟錛屽緢澶氫漢浼?xì)璇村紩鐢ㄦ槸涓涓埆鍚嶏紝榪欎釜鐞嗚В浼間箮澶繃妯$硦銆傜敤Eckel鐨勮娉曪紝寮曠敤灝卞儚鏄兘鑷姩琚紪璇戝櫒闂存帴寮曠敤鐨勫父閲忓瀷鐨勬寚閽堛備綘鏃犻渶鑰冭檻瀹冩槸鍚﹁鍒濆鍖栵紝涔熶笉鐢ㄨ冭檻鎬庢牱瀵瑰叾瑙e紩鐢紝鍥犱負(fù)緙栬瘧鍣ㄤ細(xì)鐩戠潱浣犲仛濂藉墠鑰咃紝鍙堜細(xì)鑷姩鐨勫府浣犲畬鎴愬悗鑰呫備竴涓紩鐢ㄦ繪槸鍜屼竴鍧楀悎娉曠殑瀛樺偍鍗曞厓鐩歌仈緋伙紝榪欏氨鏄綘鍞竴闇瑕佹椂鍒葷墷璁扮殑銆?/p>
鍏堣鍑芥暟鍙傛暟鍚с傚綋浣犱粎浠呴渶瑕佸弬鏁扮殑鍊兼潵鍋氬嚱鏁頒腑鐨勮繍綆楁椂錛屼紶閫掍竴涓父閲忓紩鐢ㄤ竴鑸潵璇翠細(xì)濂戒簬鍊間紶閫掋傞鍏堟槸鏁堢巼錛屽間紶閫掑氨鎰忓懗鐫鎷瘋礉鏋勯犲嚱鏁扮殑璋冪敤錛岃嚜鐒朵篃鏈夋瀽鏋勫嚱鏁扮殑寮閿錛岃岃繖浜涢兘鍙互鍦ㄤ紶閫掑紩鐢ㄧ殑鏃跺欏緱浠ラ伩鍏嶇殑錛涗粠鍑芥暟璋冪敤鑰呮潵鐪嬶紝浣跨敤浼犻掑紩鐢ㄧ殑鍑芥暟鍜屼紶鍊間紶閫掔殑鍑芥暟鐨勮皟鐢ㄥ艦寮忓茍娌℃湁鍖哄埆錛涘浜庣戶鎵夸綋緋昏岃█錛屼嬌鐢ㄥ紩鐢ㄤ紶閫掕繕鍙互閬垮厤鍒囧壊鎴栬呭垎鐗囬棶棰橈紝鍥犱負(fù)寮曠敤鍙互寰堝ソ鐨勫疄鐜板悜涓婄被鍨嬭漿鎹€傚綋鐒訛紝濡傛灉鍙槸闇瑕佷嬌鐢ㄥ鹼紝浣犲簲璇ュ皢寮曠敤澹版槑涓篶onst銆傚綋闇瑕佹敼鍙樺閮ㄥ璞$殑鏃跺欙紝寮曠敤鐨勫鎵嬪氨鍙樻垚浜嗘寚閽堬紝涓よ呭湪鏁堢巼涓婂彲浠ヨ涓哄悓絳夛紝寮曠敤鍦ㄥ嚱鏁扮殑緙栧啓鑰呯殑瑙掑害鏉ョ湅鏇磋嚜鐒訛紝鍗村鏄撹鍑芥暟鐨勮皟鐢ㄨ呬駭鐢熸販娣嗭紝鍥犱負(fù)榪欑鍙樻崲鎬ц闅愯棌浜嗐傚緢闅捐璋佸ソ璋佸潖錛屽氨鐪嬪叿浣撴儏鍐電殑鏉冭 鍚с?/p>
浠庢晥鐜囩殑瑙掑害鏉ヨ錛岃繑鍥炲煎綋鐒朵篃搴旇閫夋嫨寮曠敤錛屼笉榪囧綋浣犺繑鍥炲眬閮ㄥ璞$殑寮曠敤錛屾垨鑰呭嚱鏁板唴閮ㄧ敤new鍒濆鍖栫殑鎸囬拡鐨勫紩鐢ㄦ椂錛屾儏鍐靛氨鍙樺緱寰堢碂緋曚簡銆傚墠鑰呭湪鍑芥暟璋冪敤鑰呬嬌鐢ㄥ畠鐨勬椂鍊欏凡緇忚閿姣佷簡錛屼篃灝辨槸浣犺繚鑳屼簡寮曠敤鎬繪槸鍜屼竴鍧楀悎娉曠殑瀛樺偍鍗曞厓鐩歌仈緋葷殑鍑嗗垯錛屽悗鑰呬技涔庤В鍐充簡榪欎釜寮曠敤鏈夋晥鎬х殑闂錛屼笉榪囧緢閬楁喚錛屽紩鍙戜簡涓涓洿澶х殑闂錛氬唴瀛樻硠闇詫紝鍥犱負(fù)娌℃湁涓涓悎閫傜殑鏈哄埗鍘諱繚璇佸湪姝g‘鐨勬椂闂磀elete榪欎釜鎸囬拡錛屾瘡涓嬈$殑鍑芥暟璋冪敤閮藉鑷翠竴鐐瑰唴瀛樻硠闇詫紝榪欐槸闈炲父鍙曠殑銆傚叾瀹炲師鍒欎篃寰堢畝鍗曪紝褰撲綘紜疄闇瑕佷竴涓柊鐨勫璞$殑鏃跺欙紝浣犲氨搴旇涓哄叾浠樺嚭鏋勯犲拰鏋愭瀯鐨勫紑閿錛屾渶鍏稿瀷灝辨槸operator +, -, *, /鍑芥暟銆傚綋鐒跺ソ蹇冪殑緙栬瘧鍣ㄨ繕鏄湁鍙兘甯綘鍋氳繑鍥炲間紭鍖栫殑錛屾妸鍑芥暟榪斿洖鐨勫璞$洿鎺ユ瀯閫犲湪浣犺祴鍊肩殑瀵硅薄鐨勫唴瀛樹笂錛屼竴鍒囧張鍙樺緱緹庡ソ浜嗐?img src="http://www.shnenglu.com/CuteSoft_Client/CuteEditor/images/emsmile.gif" align=absMiddle border=0>
B *bp2 = new B; // 闈欐佺被鍨?B* 鍔ㄦ佺被鍨?B*
B *bp3 = new D; // 闈欐佺被鍨?B* 鍔ㄦ佺被鍨?D*
1. 闈炶櫄鍑芥暟闈欐佺粦瀹氥?br> 2. 铏氬嚱鏁板姩鎬佺粦瀹氥?br> 3. 鍑芥暟鐨勭己鐪佸弬鏁伴潤鎬佺粦瀹氥?br> 4. 瀛愮被涓粎闇鍑芥暟鍚嶅嵆鍙鐩栫埗綾葷殑澶氫釜閲嶈澆鍑芥暟銆?/p>
using namespace std;
class B
{
public:
virtual void func()
{
cout << "B::func()\n";
}
void func(double d)
{
cout << "B::func(" << d << ")\n";
}
};
class D : public B
{
public:
void func()
{
cout << "D::func()\n";
}
};
int main()
{
B b;
D d;
B& rb = d;
d.func();
//d.func(2.3);
rb.func();
rb.func(2.3);
return 0;
}
鍦╒C9涓嬬殑榪愯緇撴灉涓?br> D::func()
D::func()
B::func(2.3)
濡傛灉鍘繪帀d.func(2.3);鐨勬敞閲婏紝鍒欑紪璇戝嵆鍑洪敊銆?/p>
]]>
]]>
浠ヤ笅闂閮芥病鏈夌‘鍒囩殑絳旀錛屽叧閿槸瑕佹彁閱掍綘鎬濊冪墵浠紝騫剁‘璁ゆ墍鍋氱殑浜嬫儏鏄嚭浜庢湁鎰忚瘑鐨勫喅瀹氾紝鑰屼笉鏄伓鐒朵簨浠躲?br>
1.浣犵殑綾婚渶瑕佷竴涓瀯閫犲嚱鏁板悧錛?br> 澶嶆潅鐨勭被闇瑕佹瀯閫犲嚱鏁版潵闅愯棌鐗犱滑鍐呴儴鐨勫伐浣滄柟寮忋?br>
2.浣犵殑鏁版嵁鎴愬憳鏄鏈夌殑鍚楋紵
Meyers98 Item20
3.浣犵殑綾婚渶瑕佷竴涓棤鍙傜殑鏋勯犲嚱鏁板悧錛?br> Meyers96 Item4
4.鏄笉鏄瘡涓瀯閫犲嚱鏁板垵濮嬪寲鎵鏈夌殑鏁版嵁鎴愬憳銆?br> Meyers98 Item12
5.綾婚渶瑕佹瀽鏋勫嚱鏁板悧錛?br> 璇ョ被鏄惁鍒嗛厤浜嗚祫婧愶紝鑰岃繖浜涜祫婧愬張涓嶄細(xì)鐢辨垚鍛樺嚱鏁拌嚜鍔ㄩ噴鏀俱?br>
6.綾婚渶瑕佷竴涓櫄鏋愭瀯鍑芥暟鍚楋紵
鏄惁浼?xì)閫氳繃鍩虹被鎸囬拡鍘誨垹闄ゆ淳鐢熺被瀵硅薄銆?br> Meyers98 Item14
7.浣犵殑綾婚渶瑕佸鍒舵瀯閫犲嚱鏁板悧錛?br> 澶嶅埗璇ョ被鐨勫璞℃槸鍚﹀氨鐩稿綋浜庡鍒跺叾鏁版嵁鎴愬憳鍜屽熀綾誨璞°?br> Meyers98 Item11
8.浣犵殑綾婚渶瑕佷竴涓祴鍊兼搷浣滅鍚楋紵
濡傛灉闇瑕佸鍒舵瀯閫犲嚱鏁幫紝澶氬崐涔熶細(xì)闇瑕佷竴涓祴鍊兼搷浣滅銆?br>
9.浣犵殑璧嬪兼搷浣滅鑳芥紜殑灝嗗璞¤祴緇欏璞℃湰韜悧錛?br> Meyers98 Item17
10.浣犵殑綾婚渶瑕佸畾涔夊叧緋繪搷浣滅鍚楋紵
閫昏緫涓婃槸鍚︽敮鎸佺浉絳夋搷浣滐紝綾葷殑鍊兼槸鍚﹀瓨鍦ㄦ煇縐嶆帓搴忓叧緋匯?br>
11.鍒犻櫎鏁扮粍鏃朵綘璁頒綇浜嗙敤delete[]浜嗗悧錛?br>
12.璁板緱鍦ㄥ鍒舵瀯閫犲嚱鏁板拰璧嬪兼搷浣滅鐨勫弬鏁扮被鍨嬩腑鍔犱笂const浜嗗悧錛?br> 澶嶅埗瀵硅薄涓嶄細(xì)鏀瑰彉鍘熷璞°?br>
13.濡傛灉鍑芥暟鏈夊紩鐢ㄥ弬鏁幫紝鐗犱滑搴旇鏄痗onst寮曠敤鍚楋紵
鍙湁褰撳嚱鏁版兂鏀瑰彉鍙傛暟鏃訛紝鎵嶅簲璇ユ湁涓嶇敤const澹版槑鐨勫紩鐢ㄥ弬鏁般?br>
14.璁板緱閫傚綋鍦板0鏄庢垚鍛樺嚱鏁頒負(fù)const鐨勪簡鍚楋紵
濡傛灉紜俊涓涓垚鍛樺嚱鏁頒笉鐢ㄤ慨鏀圭墵鐨勫璞★紝灝卞彲浠ュ0鏄庣墵涓篶onst錛岃繖鏍峰氨鍙互鎶婄墵鐢ㄤ簬const瀵硅薄浜嗐?br>
娉? Meyers96: Scott Meyers More Effective C++.
娉? Meyers98: Scott Meyers Effective C++ 2nd edition.
]]>
浜庢槸涓浜汣/C++紼嬪簭鍛樺彂鐜頒簡棰勫鐞嗗櫒榪欎釜濂戒笢瑗匡紝鐢ㄥ畯鏉ユā鎷熶竴涓嚱鏁拌皟鐢紝娑堥櫎浜嗘墍鏈夊紑閿錛屽張浼間箮寰楀埌浜嗗拰鍑芥暟璋冪敤鍚屾牱鐨勬晥鏋溿傚彲鎯滃ソ鏅笉闀匡紝鐢變簬浠呬粎鏄畝鍗曠殑鏂囨湰鏇挎崲錛屼細(xì)鍑虹幇琛ㄨ揪寮忓湪瀹忓唴灞曞紑鏃朵紭鍏堢駭鑳岀鏈熸湜錛屼簬鏄皚鎱庣殑紼嬪簭鍛樹滑鍙兘鎶婂弬鏁伴兘鐢ㄦ嫭鍙鋒嫭璧鋒潵錛屽彲鏄嵆浣挎槸榪欐牱錛屽綋闈㈠鍙傛暟姹傚肩殑鍓綔鐢ㄦ椂錛岃繕鏄樉鐨勬棤鑳戒負(fù)鍔涖傚浜庨挓鎯呬簬OO鐨凜++紼嬪簭鍛橈紝浠栦滑鍙戠幇浜嗕竴涓洿緋熺硶鐨勯棶棰橈細(xì)鐢ㄥ畯妯℃嫙鐨勫嚱鏁版棤娉曡闂被鐨勭鏈夋垚鍛橈紝浠ヨ嚧浜庢棤娉曚嬌鍏舵垚涓烘垚鍛樺嚱鏁般?br>
榪樺ソC++榪樻彁渚涗簡鍙︿竴涓埄鍣細(xì)鍐呰仈銆傚彧瑕佸湪鍑芥暟瀹氫箟鍓嶇畝鍗曠殑鍔犱笂inline鍏抽敭瀛楋紝灝卞彲浠ョ敤鏅氬嚱鏁板疄鐜板畯鐨勬晥鐜囷紝澶栧姞鍙璁$殑琛屼負(fù)鍜岀被鍨嬪畨鍏紝鑰屼笖緙栬瘧鍣ㄨ繕鍙互瀵瑰嚱鏁頒綋鎵ц鐗瑰畾鐜涓嬬殑浼樺寲銆備綘鍙互鎶婂畾涔夋斁鍦ㄥご鏂囦歡涓紝鐢ㄤ簬姣忎釜浣跨敤榪欎釜鍑芥暟鐨勬枃浠惰屼笉浼?xì)漶旂敓澶氫釜瀹氫箟鐨勯敊璇傝嚦浜庢垚鍛樺嚱鏁幫紝灝辨洿緹庡浜嗭紝鍙浣犲湪綾葷殑鍐呴儴瀹氫箟錛屽氨鑷姩鎴愪負(fù)鍐呰仈鍑芥暟錛岀敋鑷充笉闇瑕侀澶栧0鏄庯紝榪欑鐢ㄦ硶琚ぇ閲忕殑鐢ㄤ負(fù)綾繪垚鍛樼殑璁塊棶鍑芥暟銆?br>
鍙槸銆傘傘備綘涔熻浼?xì)闂Q屽唴鑱旂湡鐨勯偅涔堢編濂藉悧錛熼偅涓轟粈涔圕++涓嶉粯璁ゆ墍鏈夊嚱鏁伴兘鏄唴鑱斿嚱鏁幫紝榪欐牱涓嶆槸鏇寸渷浜嬪悧錛?br>
榪樻槸閭e彞鑰佽瘽錛屽ぉ涓嬫病鏈夊厤璐圭殑鍗堥錛屽湪浣犱韓鍙楀唴鑱旂粰浣犲甫鏉ョ殑濂藉鐨勫悓鏃訛紝浣犱篃鍦ㄤ負(fù)姝や粯鍑轟唬浠鳳紝鏈変簺寰堟槑鏄撅紝鏈変簺浣犲嵈鏈繀鎰忚瘑鍒般?br>
鏈鏄捐屾槗瑙佺殑錛岀敱浜庣敤鍑芥暟浣撲唬鏇垮嚱鏁拌皟鐢紝鐩爣浠g爜鐨勪綋縐嚑涔庝笉鍙伩鍏嶇殑澧炲ぇ浜嗭紝榪欐剰鍛崇潃鏇村鐨勫唴瀛樺崰鐢ㄣ傝櫄鎷熷唴瀛橈紵鏄殑錛岃櫄鎷熷唴瀛樺彲浠ュ綰蟲洿澶х殑紼嬪簭錛屼絾鏄繃浜庡簽澶х殑浠g爜浣撶Н寰堟湁鍙兘瀵艱嚧棰戠箒鐨勯〉闈㈣皟搴︾敋鑷崇郴緇熼綈革紝涓涓湪I/O涓婇綣佹搷浣滅殑紼嬪簭錛屼綘鑳芥寚鏈涚墵蹇埌鍝噷鍘誨憿錛?br>
鍜宻tatic鎴栬卌onst涓嶄竴鏍鳳紝inline浠呬粎鎰忓懗瀵圭紪璇戝櫒涓涓緩璁垨鑰呴個(gè)璇鳳紝渚嬪闈㈠閫掑綊鍑芥暟鐨勬椂鍊欙紝緇濆ぇ澶氭暟緙栬瘧鍣ㄤ細(xì)鏃犺浣犳剼锠㈢殑寤鴻銆傝緙栬瘧鍣ㄦ嫆緇濈殑鏃跺欙紝浼?xì)鍙戠敓浠涔堝憿錛熺幇琛孋++鏍囧噯瑙勫畾榪欎釜鎯呭喌涓嬬紪璇戝櫒灝辮鍍忓寰呴潪鍐呰仈鍑芥暟涓鏍鳳紝褰撲綘鎶婂畾涔夋斁鍦ㄥご鏂囦歡鑰岀敤浜庡閲嶇紪璇戝崟鍏冪殑鏃跺欙紝澶氬畾涔夐敊璇究鏄笉鍙伩鍏嶇殑銆傛墍浠ワ紝璇蜂笉瑕佷綆浼扮紪璇戝櫒鐨勬櫤鎱э紝鎰氳牏鐨勫唴鑱斿緩璁渶鍚庝拱鍗曠殑榪樻槸浣犺嚜宸便?br>
閭g紪璇戝櫒鍒板簳鐢ㄤ粈涔堝噯鍒欐潵鍐沖畾鏄惁鎼悊浣犵殑inline寤鴻鍛紵鏍囧噯鐨勭瓟妗堟槸娌℃湁絳旀錛屼絾鏄湁涓浜涘熀鏈殑鍘熷垯鍙互浣滀負(fù)鍙傝冦傞鍏堬紝鍑芥暟澶鏉傜殑鏃跺欙紝緙栬瘧鍣ㄤ竴鑸細(xì)鏀懼純鍐呰仈錛屼緥濡備笂闈㈡彁鍒扮殑閫掑綊璋冪敤錛屽嚱鏁板唴鏈夊驚鐜紝鍐嶆垨鑰呭嚱鏁頒綋鐢辮澶氳鍙ョ粍鎴愶紝鎬諱箣涓鏃︾紪璇戝櫒瑙夊緱涓嶅垝綆楃殑鏃跺欑墵灝卞緢鐞嗘櫤鐨勯夋嫨鏀懼純錛涘綋鏄懼紡鎴栬呴殣寮忓湴鍙栧嚱鏁板湴鍧騫朵笖浣跨敤鍦板潃鐨勶紝蹇呯劧涓嶄細(xì)鍙戠敓鍐呰仈錛屼綘鎬諱笉鑳芥寚鏈涚紪璇戝櫒涓轟綘鐢熸垚涓涓茍涓嶅瓨鍦ㄧ殑鍑芥暟鐨勫湴鍧鍚э紱鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟涓鑸篃涓嶉傚悎鍐呰仈錛屽洜涓鴻繖涓や釜瀹朵紮緇忓父浼?xì)姣斾綘鐪嬪埌鐨勫嚱鏁颁綋鏇翠负澶嶆潅锛尀鍏舵槸娑夊強(qiáng)鐟翩壙鏃剁殑灞倠啤寰忕珛涓庨攢姣佺殑鏃跺欍傝繕鏈変竴鐐逛篃璁稿嚭涔庝綘鐨勬剰鏂欙紝鍐呰仈鏄拰鍑芥暟璋冪敤鑰岄潪鍑芥暟鏈韓鑱旂郴鍦ㄤ竴璧風(fēng)殑錛屼篃灝辨槸璇寸紪璇戝櫒瀹屽叏鍙兘鍦ㄦ煇浜涜皟鐢ㄧ偣浣跨敤鍐呰仈鑰屽湪鍏朵粬璋冪敤鐐逛笉浜堝唴鑱旓紝榪欏畬鍏ㄦ牴鎹紪璇戝櫒瀵逛笂涓嬫枃鐨勫垽鏂屽畾銆?br>
娌℃湁浜鴻兘淇濊瘉紼嬪簭娌℃湁bug錛屾墍浠ユ墠闇瑕佽皟璇曘傚彲鏄紝褰撹皟璇曞櫒閬囧埌鍐呰仈鍑芥暟鐨勬椂鍊欙紝浣犺兘鎯沖埌涓涓ソ鍔炴硶璁╁叾涓嶆檿鑿滃悧錛熸庝箞鍦ㄤ竴涓笉瀛樺湪鐨勫嚱鏁伴噷璁劇疆鏂偣鍛紵鎬庝箞鍗曟鎵ц鍒拌繖鏍蜂竴涓嚱鏁板憿錛熸庝箞淇樿幏瀵瑰畠鐨勮皟鐢ㄥ憿錛熸眰姹備綘浜嗭紝鍚屾儏涓涓嬪彲鎬滅殑璋冭瘯鍣ㄥ惂銆?br>
鍏跺疄鍙璁よ瘑鍒頒竴鐐癸紝鍐呰仈鐨勬湰璐ㄦ槸涓縐嶄紭鍖栵紝浜嬫儏灝卞彉寰楃畝鍗曚簡銆備紭鍖栨槸寤虹珛鍦ㄧ▼搴忔湰韜殑姝g‘鎬х殑鍩虹涓婄殑錛岃屼笖涓鑸岃█錛屾湁閭d簺閫氭檽鐢熸垚浠g爜鍜屾墽琛岀幆澧冪殑宸ュ叿鏉ユ墽琛屽線寰姣旂▼搴忓憳鏁堟灉鏇村ソ銆?img src="http://www.shnenglu.com/CuteSoft_Client/CuteEditor/images/emsmile.gif" align=absMiddle border=0>
]]>
鍋囪浣犲畾涔変簡涓涓┖綾?br> class A {};
鍦–++緙栬瘧鍣ㄩ氳繃瀹冪殑鏃跺欙紝榪欎釜綆鍗曠殑絀虹被涔熷彉寰椾赴瀵屽褰╀簡錛屼簨瀹炰笂浣犲浜嗕竴涓己鐪佹瀯閫犲嚱鏁幫紝涓涓嫹璐濇瀯閫犲嚱鏁幫紝涓涓祴鍊艱繍綆楃錛屼竴涓瀽鏋勫嚱鏁頒互鍙?qiáng)涓瀵瑰彇鍦板潃榪愮畻絎︼紝鎬庝箞鏍鳳紝榛橀粯涓轟綘澹版槑浜嗚繖涔堝鍑芥暟錛孋++緙栬瘧鍣ㄥ鍕ゅ揩鐨勪簡鍚с備笉榪囧ぉ涓嬫病鏈夊厤璐圭殑鍗堥錛屼換鍔充換鎬ㄧ殑緙栬瘧鍣ㄥ彲鑳藉湪涓嶇粡鎰忛棿宸茬粡緇欎綘璁句笅浜嗛櫡榪涖?br>
1.緙虹渷鏋勯犲嚱鏁般傚疄闄呬笂錛屽畠浠涔堥兘涓嶅仛錛屽緢瀹夊叏錛岃屼笖褰撲綘澹版槑浜嗚嚦灝戜竴涓瀯閫犲嚱鏁扮殑鏃跺欙紝緙栬瘧鍣ㄥ氨涓嶅啀鐢熸垚緙虹渷鏋勯犲嚱鏁般?br>
2.鎷瘋礉鏋勯犲嚱鏁幫紙璧嬪艱繍綆楃錛夈傜己鐪佹嫹璐濇瀯閫犲嚱鏁幫紙璧嬪艱繍綆楃錛夊綾葷殑闈為潤鎬佹暟鎹垚鍛樿繘琛?"浠ユ垚鍛樹負(fù)鍗曚綅鐨? 閫愪竴鎷瘋礉鏋勯狅紙璧嬪鹼級銆備篃灝辨槸璇翠細(xì)瀵圭被涓殑闈為潤鎬佹暟鎹垚鍛樿繘琛岄掑綊鐨勬嫹璐濇瀯閫犲嚱鏁幫紙璧嬪艱繍綆楃錛夎皟鐢紝鐩村埌鎵懼埌涓涓嫹璐濇瀯閫犲嚱鏁幫紙璧嬪艱繍綆楃錛夋垨鑰呭唴緗被鍨嬩負(fù)姝€傚浜庡唴緗被鍨嬶紝鍒欎嬌鐢ㄤ粠婧愬璞″埌鐩殑瀵硅薄鐨勯愪綅鎷瘋礉銆傚彲鏄傘傘傚綋浣犵殑鏁版嵁鎴愬憳鏄寚閽堢殑鏃跺欏憿錛熺粨鏋滄槸婧愬璞″拰鐩殑瀵硅薄鐨勬寚閽堟垚鍛橀兘鎸囧悜浜嗗悓涓鐗囧唴瀛樼┖闂達(dá)紝濡傛灉鐩殑瀵硅薄鍘熸潵灝辨湁鎸囧悜鐨勫唴瀹癸紝灝變駭鐢熶簡鍐呭瓨娉勯湶錛屽嵆浣挎病鏈夛紝鍙鏈変竴涓璞″厛娑堜骸錛屽彟涓涓殑鎸囬拡灝辨?zhèn)I轟簡錛屽彧鏄涔堝彲鎬曠殑浜嬫儏鍟娿傛墍浠ワ紝褰撶被涓湁鎸囬拡鎴愬憳鐨勬椂鍊欙紝灝卞簲璇ヨ嚜宸卞畾涔夋嫹璐濇瀯閫犲嚱鏁幫紙璧嬪艱繍綆楃錛夛紝鑷充簬鏄畝鍗曟嫹璐濊繕鏄紩鐢ㄨ鏁幫紝灝卞彲浠ユ牴鎹疄闄呮儏鍐佃屽畾浜嗐?br>
3.鏋愭瀯鍑芥暟銆傜己鐪佹瀽鏋勫嚱鏁頒篃涓嶅仛浠涔堢壒鍒殑浜嬫儏錛屼粎浠呮槸閿姣佸璞°備笉榪囨湁鐐歸渶瑕佹敞鎰忥紝鐢熸垚鐨勬瀽鏋勫嚱鏁頒竴鑸槸闈炶櫄鎷熺殑錛岄櫎闈炴槸浠庝竴涓0鏄庝簡铏氭嫙鏋愭瀯鍑芥暟鐨勫熀綾葷戶鎵胯屾潵銆傛瀽鏋勫嚱鏁幫紝铏氭嫙鏋愭瀯鍑芥暟錛岀函铏氭瀽鏋勫嚱鏁幫紝榪欎笁鑰呮湁浠涔堝尯鍒憿錛熼鍏堬紝鏋愭瀯鍑芥暟鍜屾瀯閫犲嚱鏁頒竴鏍鳳紝鏄彲浠ユ部綾誨眰嬈¤繘琛岃皟鐢ㄧ殑錛屼篃灝辨槸璇存瀽鏋勫嚱鏁頒細(xì)浠庝綘瑕佸垹闄ょ殑綾誨紑濮嬶紝涓鐩村悜涓婂埌鍩虹被涓烘錛屼互瀹炵幇綾誨眰嬈$殑鎷嗗嵏錛涗絾鏄綋浣犲笇鏈涢氳繃鍩虹被鐨勬寚閽堝幓鍒犻櫎媧劇敓綾葷殑瀵硅薄鐨勬椂鍊欙紝濡傛灉娌℃湁铏氭嫙鏋愭瀯鍑芥暟錛岄偅涔堣涓哄氨鏄負(fù)瀹氫箟鐨勶紝鎵浠ュ綋浣犵殑綾諱腑鏈夊ぇ浜庣瓑浜庝竴涓櫄鍑芥暟鐨勬椂鍊欙紝浣犲氨搴旇绔嬪埢鎰忚瘑鍒幫紝浣犻渶瑕佷竴涓櫄鎷熸瀽鏋勫嚱鏁幫紝鎴栬呰錛屼綘搴旇淇濊瘉鍩虹被鎷ユ湁涓涓櫄鏋勯犲嚱鏁般傞偅綰櫄鏋愭瀯鍑芥暟鍙堟湁浠涔堢敤鍛紵綰櫄鍑芥暟灝嗕駭鐢熸娊璞$被銆傛湁浜涙椂鍊欙紝浣犳兂浣夸竴涓被鎴愪負(fù)鎶借薄綾伙紝浣嗗垰濂藉張娌℃湁浠諱綍綰櫄鍑芥暟銆傛庝箞鍔烇紵鍥犱負(fù)鎶借薄綾繪槸鍑嗗琚敤鍋氬熀綾葷殑錛屽熀綾誨繀欏昏鏈変竴涓櫄鏋愭瀯鍑芥暟錛岀函铏氬嚱鏁頒細(xì)浜х敓鎶借薄綾伙紝鎵浠ユ柟娉曞緢綆鍗曪細(xì)鍦ㄦ兂瑕佹垚涓烘娊璞$被鐨勭被閲屽0鏄庝竴涓函铏氭瀽鏋勫嚱鏁幫紝鏄殑錛屽氨鏄繖涔堢畝鍗曘傚綋鐒跺暒錛屼綘榪橀渶瑕佷負(fù)榪欎釜綰櫄鏋愭瀯鍑芥暟鎻愪緵涓涓畾涔夛紝鍝曚粎浠呮槸{}錛岃屽湪鍏舵淳鐢熺被涓紝緙栬瘧鍣ㄤ細(xì)鑷姩鐢熸垚涓涓瀽鏋勫嚱鏁扮殑瀹氫箟銆?br>
4.鍙栧湴鍧榪愮畻絎︺傝繖涓瘮杈冪畝鍗曪紝鍙槸鍗曠函鐨勮繑鍥炰簡瀵硅薄鐨勫湴鍧錛屼笉榪囨牴鎹繑鍥炲兼槸鍚︿負(fù)const榪樻槸鍑虹幇浜嗛噸杞姐?br>
榪欓噷榪樺簲璇ヨ冭檻涓縐嶆儏鍐碉紝鏈夋椂鍊欎綘鍙互紜畾涓嶉渶瑕佹煇浜涢殣寮忕敓鎴愮殑鍑芥暟銆備緥濡傚湪浣犵殑綾諱腑鎷瘋礉鍜岃祴鍊奸兘鏄笉鍏佽鐨勶紝榪欐椂鍊欎綘灝辮鍧氬喅鐨勭姝㈢紪璇戝櫒鐢熸垚瀹冧滑銆傛柟娉曞叾瀹炲緢綆鍗曪紝鎶婂畠浠0鏄庝負(fù)private錛屽茍涓斾笉瑕佸幓瀹氫箟銆傛槸鐨勶紝灝辮繖涔堢畝鍗曪紝浣嗕綘璇曞浘璋冪敤鐨勬椂鍊欙紝緙栬瘧鍣ㄤ細(xì)鍝囧搰澶у彨錛屼綘鍙堥伩鍏嶄簡涓嬈¢敊璇?img src="http://www.shnenglu.com/CuteSoft_Client/CuteEditor/images/emsmile.gif" align=absMiddle border=0>
]]>
綾誨瀷杞崲涓嶅涔庝袱縐嶏細(xì)鏄懼紡綾誨瀷杞崲鍜岄殣寮忕被鍨嬭漿鎹紝涓嬮潰鍒嗗埆璇存槑銆?br>
1.鏄懼紡綾誨瀷杞崲銆侰++寮曞叆浜嗗洓涓柊鐨勭被鍨嬭漿鎹㈢錛屽彲浠ユ浛浠椋庢牸綾誨瀷杞崲鐨勫叏閮ㄥ姛鑳斤紝騫舵彁渚涗簡鏇村己澶х殑鍔熻兘鍜屾洿濂界殑瀹夊叏鎬э紝鍏嬫湇浜咰椋庢牸鐨勭被鍨嬭漿鎹㈢洰鐨勬т笉鏄庣‘鍜岄毦浠ユ煡鎵劇殑緙洪櫡銆?br>
(1).static_cast錛氱敤浜庢槑紜畾涔夌殑鍙樻崲錛屽熀鏈笂鍜岄氱敤鐨凜椋庢牸綾誨瀷杞崲鏈夌潃鍚屾牱鐨勮兘鍔涳紝鍚箟浠ュ強(qiáng)鍔熻兘闄愬埗銆傚寘鎷紪璇戝櫒鍏佽鎴戜滑鎵鍋氱殑涓嶇敤寮哄埗杞崲鐨?#8220;瀹夊叏”鍙樻崲鍜屼笉澶畨鍏ㄤ絾娓呮瀹氫箟鐨勫彉鎹€?br>
(2).const_cast錛氱敤鏉ユ敼鍙樺璞$殑const鎴栬卾olatile灞炴э紝鑰屼笖鐢辯紪璇戝櫒寮哄埗綰︽潫璇剰鍙兘鍋氳繖涓彉鎹€傝繖涓漿鎹㈢鍏跺疄寰堥浮鑲嬶紝鍥犱負(fù)鎶婁竴涓潪甯擱噺鎸囬拡鎴栧紩鐢ㄨ祴緇欎竴涓父閲忔寚閽堟垨寮曠敤鏈韓灝辨槸鍚堟硶鐨勶紱鍙嶈繃鏉ョ殑璇濅竴鑸潵璇寸敤綾誨瀷杞崲鍘繪帀瀵硅薄鐨勫父閲忓睘鎬ч氬父鏄笉濂界殑緙栫▼椋庢牸錛屽洜涓哄畬鍏ㄦ湁鍙兘緙栬瘧鍣ㄥ凡緇忔妸璇ュ璞″瓨鍌ㄥ湪浜嗗彧璇誨唴瀛樹腑錛岃屼笖灝遍昏緫涓婃潵璇村緢闅炬壘鍒板幓闄onst灞炴х殑鍚堢悊瑙i噴錛屽鏋滃彧鏄拰綾繪垚鍛樼浉鍏崇殑錛屽垯搴旇浣跨敤mutable銆?br>
(3).dynamic_cast錛氱敤浠ラ拡瀵逛竴涓戶鎵夸綋緋誨仛鍚戜笅鎴栬呮í琛岀殑瀹夊叏杞崲錛屽茍涓斿彲浠ョ煡閬撹漿鎹㈡槸鍚︽垚鍔燂紝澶辮觸浼?xì)閫氳繃絀烘寚閽堟垨鑰呭紓甯革紙鍥犱負(fù)娌℃湁絀哄紩鐢級鏉ユ彁閱掔▼搴忓憳銆傚煎緱娉ㄦ剰鐨勬槸榪欎釜緇ф壙浣撶郴閲屽繀欏昏鏈夎櫄鍑芥暟錛屽洜涓篸ynamic_cast闇瑕佽鍙朧TABLE鍐呯殑淇℃伅鏉ュ仛鍒ゆ柇錛岃繖閲屼篃鍙互寮曞嚭RTTI鐨勯棶棰橈紝浠ュ悗鍐嶅啓鍚с傝繖涓漿鎹㈢鎸哄疄鐢ㄧ殑錛屼篃娌℃湁浠涔堣嚧鍛界己闄鳳紝灝辨槸闇瑕佷竴鐐歸澶栫殑寮閿鍚с?br>
(4).reinterpret_cast錛氶噸瑙i噴杞崲錛屾悶涓嶅お娓呮錛屾殏鏃朵篃娌℃湁鍙戠幇璁茬殑姣旇緝閫忓交鐨勮祫鏂欍傚紩鐢‥ckel鐨勮瘽“浣跨敤reinterpret_cast閫氬父鏄竴縐嶄笉鏄庢櫤錛屼笉鏂逛究鐨勭紪紼嬫柟寮?#8221;錛屼笉鐢ㄥ氨涓嶄細(xì)鍑洪敊浜嗐?br>
2.闅愬紡綾誨瀷杞崲銆侰++鐨勭紪璇戝櫒鍜孋鐩告瘮錛屽嫟鍔充簡澶澶錛屾繪槸鍠滄榛橀粯涓烘垜浠仛浠涔堜簨鎯咃紝澶鏃跺欒繖緇欐垜浠甫鏉ヤ簡渚垮埄錛屼絾榪囩姽涓嶅強(qiáng)錛屼換鍔充換鎬ㄧ殑緙栬瘧鍣ㄤ篃浼?xì)缁欐垜浠甫鏉ラ櫙偪涘Q屾瘮濡傝闅愬紡綾誨瀷杞崲銆?br>
鍦–鍜孋++涓紝濡傛灉緙栬瘧鍣ㄧ湅鍒頒竴涓〃杈懼紡鎴栬呭嚱鏁拌皟鐢ㄤ嬌鐢ㄤ簡涓涓笉鍚堥傜殑綾誨瀷錛屽畠?yōu)兗?xì)灝濊瘯鐫鎵ц涓涓嚜鍔ㄧ被鍨嬭漿鎹紝浠庣幇鍦ㄧ殑綾誨瀷杞崲鍒版墍瑕佹眰鐨勭被鍨嬨傚鏋滃彧鏄浐鏈夌被鍨嬶紝涓鍒囦技涔庡緢瀹岀編錛屽洜涓哄彲浠ユ妸涓涓猧nt鍊間紶閫佺粰瀹氫箟涓篸ouble鍙傛暟鐨勫嚱鏁幫紝涓嶈繃涓鏃︽秹鍙?qiáng)鍒颁簡鑷畾涔壘c誨瀷錛屼簨鎯呭氨鍙樼碂緋曚簡銆?br>
鏈変袱縐嶅嚱鏁板彲鑳戒細(xì)瀵艱嚧闅愬紡綾誨瀷杞崲錛氬崟鍙傛暟鏋勯犲嚱鏁幫紙涔熷彲浠ユ槸闄や簡絎竴涓弬鏁板叾浠栭兘鏈夐粯璁ゅ肩殑澶氬弬鏁版瀯閫犲嚱鏁幫級浠ュ強(qiáng)綾誨瀷杞崲榪愮畻絎﹂噸杞藉嚱鏁般傚墠鑰呯敱鐩殑綾繪墽琛岃漿鎹紝涔熷氨鏄鍔犱竴涓柊綾葷殑鏃跺欎負(fù)鐜版湁緋葷粺澧炲姞浜嗘柊鐨勮漿鎹㈤斿緞錛屽悗鑰呯敱婧愮被鎵ц杞崲錛屾墍浠ュ彧鏈夊悗鑰呮墠鑳藉疄鐜頒粠鑷畾涔夌被鍨嬪埌鍐呯疆綾誨瀷鐨勮漿鎹€?br>
浣嗘槸闅愬紡杞崲閫氬父閮芥槸涓嶅畨鍏ㄧ殑銆傜粡甯鎬細(xì)鍦ㄤ綘鏍規(guī)湰涓嶅笇鏈涜繘琛岀被鍨嬭漿鎹㈢殑鏃跺欒璋冪敤錛屼粠鑰屽彲鑳藉鑷撮敊璇殑浠g爜欏哄埄閫氳繃緙栬瘧鎴栬呯▼搴忕殑榪愯涓嶇鍚堥鏈燂紝鍙︿竴鏂歸潰錛屽彲鑳戒細(xì)鍜岄噸杞借В鏋愪駭鐢熷啿紿侊紝榪欏湪鎻愪緵浜嗕笉姝竴縐嶇被鍨嬬殑鑷姩杞崲鑰屼笖鎭板ソ鍑芥暟鍙堣閲嶈澆鐨勬椂鍊欏氨鍙戠敓浜嗭紝涓嶈繃榪欑鎯呭喌緙栬瘧鍣ㄤ細(xì)鎶楄錛屽叾瀹炲ソ浜庡墠涓縐嶆儏鍐點(diǎn)?br>
瑙e喅鏂規(guī)硶鍏跺疄騫朵笉澶嶆潅錛屾兂鍔炴硶鑷繁鎺у埗綾誨瀷杞崲灝辨槸浜嗭紝灝卞儚銆奀涓撳緙栫▼銆嬮噷鎻愬埌鐨勪竴涓噸瑕佸師鍒欙細(xì)“鐭ラ亾鑷繁鍦ㄥ仛浠涔堬紒”鎵浠ュ氨鍙互浣跨敤鍚嶅瓧涓嶅悓浜庤娉曞叧閿瓧浣嗗姛鑳界浉鍚岀殑鍑芥暟鏉ユ浛浠h漿鎹㈣繍綆楃銆傛湁涓粡鍏哥殑渚嬪瓙灝辨槸string綾諱腑鏈夌殑鏄繀欏昏鏄懼紡璋冪敤鐨刢_str()鎴愬憳鍑芥暟鑰岄潪闅愬紡綾誨瀷杞崲銆傚浜庡崟鍙傛暟鏋勯犲嚱鏁幫紝鍙鍦ㄥ嚱鏁板0鏄庡墠鍔犱笂explicit鍏抽敭瀛楋紝灝辮交鏉鵑伩鍏嶄簡闅愬紡綾誨瀷杞崲錛岃屼繚鎸佷簡鏄懼紡綾誨瀷杞崲鐨勫悎娉曟с?img src="http://www.shnenglu.com/CuteSoft_Client/CuteEditor/images/emsmile.gif" align=absMiddle border=0>
鎬葷殑鏉ヨ錛宑onst鏈変互涓嬪嚑縐嶄嬌鐢ㄥ満鍚堬紝鍊兼浛浠o紝鎸囬拡錛屽嚱鏁板弬鏁板拰榪斿洖鍊鹼紝綾諱腑鐨刢onst錛岃繖鍑犺呮蹇典笂鏄竴鑷寸殑錛屼絾鏄敤娉曞嵈瀛樺湪鐫緇嗗井鐨勫樊鍒紝涔熸槸鏈枃闇瑕佽鏄庣殑闂銆?br>
1.鍊兼浛浠c傜敤浠ュ彇浠?define瀹炵幇鍊兼浛浠g殑鍏ㄩ儴鍔熻兘錛屼綔涓轟竴縐嶆洿浼樼殑鐢ㄦ硶錛宑onst榪樺彲浠ユ彁渚涚被鍨嬪畨鍏ㄤ互鍙?qiáng)璋冭瘯鏃剁殑渚垮埄锛尵~栬瘧鍣ㄤ篃鍙互榪涜甯擱噺鎶樺彔浼樺寲銆傜紪璇戝櫒閫氬父騫朵笉涓篶onst鍒嗛厤瀛樺偍絀洪棿錛屼絾鍑虹幇鍙朿onst鐨勫湴鍧絳夋搷浣滄椂蹇呴渶榪涜瀛樺偍絀洪棿鍒嗛厤錛岃繖縐嶄笉鑳藉畬鍏ㄩ伩鍏嶅鑷翠簡const鐨勫畾涔夐粯璁や負(fù)鍐呴儴榪炴帴銆傚煎緱娉ㄦ剰鐨勬槸褰揷onst鐢ㄤ簬鏁扮粍鍜岀粨鏋勪綋絳夐泦鍚堟椂鍙剰鍛崇潃涓鍧椾笉鑳芥敼鍙樼殑瀛樺偍鍖哄煙錛屽茍涓嶈兘鍦ㄧ紪璇戞湡闂翠嬌鐢ㄥ畠鐨勫箋?br>
2.鎸囬拡銆傚彲浠ヤ互“*”涓哄垎鐣岀嚎錛宑onst鍑虹幇鍦ㄥ乏渚ф椂淇グ鎸囬拡鎸囧悜鐨勫璞★紝鍙充晶鏃朵慨楗版寚閽堟湰韜殑鍊鹼紝涔熷氨鏄寚閽堥噷瀛樺偍鐨勫湴鍧銆傚彲浠ユ妸涓涓潪const瀵硅薄鐨勫湴鍧璧嬬粰涓涓猚onst鎸囬拡錛屼絾鏄笉鑳芥妸涓涓猚onst瀵硅薄鐨勫湴鍧璧嬬粰涓涓潪const鎸囬拡錛屼笉榪囧瓨鍦ㄤ竴鐐瑰皬灝忕殑渚嬪錛屽氨鏄緥濡俢har *str = "TheAnswer"鍗存槸鍚堟硶鐨勶紝涓嶈繃榪樻槸搴旇閬垮厤榪欑鐢ㄦ硶錛岀敤const char *str = "TheAnswer"鎴栬卌har str[] = "TheAnswer"鍏朵腑涓涓浛浠f洿濂戒竴浜涖?br>
3.鍑芥暟鍙傛暟銆傚嚱鏁板弬鏁頒腑鐨刢onst鎰忓懗鐫鍙橀噺鐨勫垵鍊間笉浼?xì)琚嚱鏁版墍淇敼錛岃繖鏄竴涓嚱鏁頒綔鑰呰岄潪鍑芥暟鐨勮皟鐢ㄨ呯殑宸ュ叿銆傛墍浠ュ綋鍊間紶閫掔殑鏃跺欙紝鍙傛暟鍒楄〃涓殑const瀹屽叏鏄啑浣欑殑錛屽鏋滀竴瀹氶渶瑕侊紝鍒欏彲浠ラ氳繃鍦ㄥ嚱鏁頒綋鍐呭畾涔変竴涓寚鍚戝父閲忓弬鏁扮被鍨嬬殑寮曠敤騫跺垵濮嬪寲涓哄弬鏁版潵綰︽潫鑷繁銆傚綋浼犻掑湴鍧鐨勬椂鍊欙紝棣栧厛閫夋嫨鐨勫簲璇ユ槸浼犻掑紩鐢紝鑰屼笖鏄痗onst寮曠敤銆傛湁浠ヤ笅鍑犱釜濂藉錛屽湪璋冪敤鑰呯湅鏉ワ紝鏁堟灉瀹屽叏絳夊悓浼犲間紶閫掞紝浣嗘槸鍦ㄤ紶閫掑ぇ瀵硅薄鐨勬椂鍊欙紝閬垮厤浜嗘瀯閫犲嚱鏁扮殑寮閿錛屾晥鐜囦笂鏈変紭鍔匡紱鍙﹀const寮曠敤鍙互鎺ュ彈涓涓復(fù)鏃跺璞′綔涓哄弬鏁幫紝榪欎篃鏄寚閽堝拰闈瀋onst寮曠敤鎵鏃犳硶鍋氬埌鐨勶紙鎸囬拡闇瑕佹帴鍙椾竴涓樉寮忕殑鍦板潃錛岃屼復(fù)鏃跺璞℃槸甯擱噺錛屼笉鑳芥妸涓涓父閲忚祴緇欎竴涓潪甯擱噺寮曠敤錛夈?br>
4.鍑芥暟榪斿洖鍊箋傝繖閲岄渶瑕佸尯鍒嗙殑涓滆タ鏇村涓浜涖傚嵆浣挎槸鎸夊艱繑鍥烇紝涔熼渶瑕佸尯鍒嗗唴緗被鍨嬪拰鑷畾涔夌被鍨嬶紝鍓嶈呮槸鍚﹀姞const鏃犳墍璋擄紝鍥犱負(fù)緙栬瘧鍣ㄥ府蹇欐妸榪欎釜榪斿洖鍊間笉璁╁叾鎴愪負(fù)鍙沖鹼紝瀵逛簬鍚庤咃紝const灝遍潪甯擱噸瑕佷簡錛屽洜涓轟竴鑸潵璇達(dá)紝淇敼涓涓氳繃鍊艱繑鍥炵殑鍑芥暟榪斿洖鍊兼繪槸涓浠惰崚璋殑浜嬫儏銆傝繑鍥炲湴鍧鏃朵慨鏀瑰嚱鏁扮殑榪斿洖鍊兼槸鍏鋒湁鍚堢悊鎬х殑錛屾墍浠ラ渶瑕侀氳繃const鏉ュ尯鍒嗭紝濡傛灉榪斿洖鍊煎姞涓婁簡const錛岄偅涔堟妸榪斿洖鍊煎綋宸﹀間嬌鐢ㄦ椂灝辮兘琚紪璇戝櫒鏈夋晥鐨勯樆姝€?br>
5.綾諱腑鐨刢onst銆傝繖閲岃繕闇瑕佷袱灝忕偣鏉ョ湅
(1).綾葷殑const鏁版嵁鎴愬憳銆傞潪static鐨刢onst鏁版嵁鎴愬憳浠呬粎鎰忓懗鐫鍦ㄥ璞$敓鍛芥湡鍐咃紝榪欐槸涓涓父閲忥紝浣嗘槸姣忎釜瀵硅薄鍙互鍖呭惈涓涓笉鍚岀殑鍊鹼紝鎵浠ュ彧鑳藉湪鏋勯犲嚱鏁頒腑瀵瑰叾榪涜鍒濆鍖栵紝涓鑸斁鍦ㄥ垵濮嬪寲鍒楄〃涔嬩腑銆傚綋浣犳兂瑕佷竴涓紪璇戞湡闂寸殑甯擱噺鏃訛紝鍒欓渶瑕佷嬌鐢╯tatic const錛屽茍鍦ㄥ畾涔夌殑鍦版柟渚垮鍏跺垵濮嬪寲錛岃繖鍙互鐢ㄦ潵鍙栦唬浠ュ墠鐨?#8220;enum hack”鐨勫皬鎶婃垙銆?br> (2).const瀵硅薄鍜屾垚鍛樺嚱鏁般傚鏋滃0鏄庝竴涓垚鍛樺嚱鏁頒負(fù)const錛屽垯璇ュ嚱鏁板彲浠ヤ負(fù)涓涓猚onst瀵硅薄鎵璋冪敤錛屽煎緱娉ㄦ剰鐨勬槸鍦ㄥ畾涔夊嚱鏁扮殑鏃跺欒閲嶇敵const璇存槑銆傜敱浜巆onst鎴愬憳鍑芥暟鍙互鍚屾椂涓篶onst鍜岄潪const瀵硅薄鎵浣跨敤錛屾墍浠ュ簲璇ユ妸涓嶄慨鏀規(guī)暟鎹垚鍛樼殑浠諱綍鍑芥暟閮藉0鏄庝負(fù)const銆?br>
const鍙互鐗墊壇鍑轟笉灝戣繛甯﹂棶棰橈紝榪欐槸涓嬮潰鐨勪富瑕佸唴瀹廣?br>
1.C涓殑const銆傚氨鍍忛┈鍏嬫濊鐨?#8220;鐗╄川鍐沖畾鎰忚瘑錛屾剰璇嗗弽浣滅敤浜庣墿璐?#8221;錛孋++涓殑涓嶅皯姒傚康涔熸笚閫忓洖浜咰璇█錛宑onst灝辨槸鍏朵腑涓涓備絾鏄痗onst鍦–涓殑鍚箟浠呬粎涓轟竴涓笉鑳借鏀瑰彉鐨勬櫘閫氬彉閲忥紝鐢氳嚦涓嶈兘琚湅浣滅紪璇戞湡甯擱噺錛屽茍涓斿湪C涓璫onst琚粯璁や負(fù)鏄閮ㄨ繛鎺ワ紝鎬繪槸浼?xì)鍒嗛厤涓鍧楀瓨鍌ㄥ尯鍩熴傛墍浠涓殑const鐢ㄥ灝辨瘮C++灝忓緱澶氫簡銆?br>
2.涓存椂瀵硅薄銆傚鏋滀竴涓璞¤鍒涘緩錛岃屽張涓嶆槸鍦ㄥ爢涓婅鍒涘緩鐨勶紝鑰屼笖榪樻病鏈夊悕瀛楋紝閭d箞榪欎釜瀵硅薄灝辨槸涓存椂瀵硅薄銆備竴鑸湪涓轟簡鍑芥暟璋冪敤鑳藉鎴愬姛鑰岃繘琛岄殣寮忕被鍨嬭漿鎹㈠拰鍑芥暟榪斿洖瀵硅薄鏃剁殑闅愬紡綾誨瀷杞崲鏃朵駭鐢熶復(fù)鏃跺璞°傚墠鑰呭彧鏈夊湪浼犲間紶閫掓垨鑰呮妸瀵硅薄浼犻掔粰澹版槑涓篶onst寮曠敤鐨勫弬鏁版椂鎵嶄細(xì)鍙戠敓銆?br>
3.mutable鍜寁olatile銆傝繖鏄袱涓拰const鏈夊瘑鍒囧叧緋葷殑鍏抽敭瀛椼傚湪綾葷殑澹版槑閲屼嬌鐢╩utable錛屽彲浠ユ寚瀹氫竴涓壒瀹氱殑鏁版嵁鎴愬憳鍙互鍦ㄤ竴涓猚onst瀵硅薄閲岃鏀瑰彉錛岃屼笖鎶婅繖縐嶅父閲忔х殑緙轟箯鍏紑鍒頒簡綾繪帴鍙d箣涓紝褰撶劧榪欓噷闈㈣繕娑夊強(qiáng)鍒版寜浣峜onst鍜屾寜閫昏緫const鐨勬蹇靛樊鍒倂olatile鍒欏憡璇夌紪璇戝櫒涓嶈鎿呰嚜瀵硅鏁版嵁榪涜浼樺寲錛屽洜涓哄彲鑳藉瓨鍦ㄤ笉鍙煡鐨勭幆澧冩敼鍙樻鍙橀噺鐨勫彲鑳姐?img src="http://www.shnenglu.com/CuteSoft_Client/CuteEditor/images/emsmile.gif" align=absMiddle border=0>