C/C++鍩虹鐭ヨ瘑-鍏ㄥ眬鍙橀噺鍜岄潤鎬佸叏灞€鍙橀噺

C/C++鍩虹鐭ヨ瘑---鍏ㄥ眬鍙橀噺鍜岄潤鎬佸叏灞€鍙橀噺
涓€銆佷綔鐢ㄥ煙

鍙橀噺鐨勫嚑绉嶄綔鐢ㄥ煙锛?

鍏ㄥ眬浣滅敤鍩燂紝鏂囦欢浣滅敤鍩燂紝鍛藉悕绌洪棿浣滅敤鍩燂紝绫讳綔鐢ㄥ煙锛屽眬閮ㄤ綔鐢ㄥ煙锛岃鍙ヤ綔鐢ㄥ煙銆?



浜屻€丆++鍐呭瓨鐨勫尯

鍐呭瓨鍒嗘垚5涓尯锛屼粬浠垎鍒槸鍫嗐€佹爤銆佽嚜鐢卞瓨鍌ㄥ尯銆佸叏灞€/闈欐€佸瓨鍌ㄥ尯鍜屽父閲忓瓨鍌ㄥ尯銆?



浜屻€佹瘮杈?

锛堜笉璁ㄨ绫讳綔鐢ㄥ煙闈欐€佸彉閲忥紝鍙鍏ㄥ眬锛?

1.瀛樺偍鍖?

鍏ㄥ眬鍙橀噺銆侀潤鎬佸眬閮ㄥ彉閲忋€侀潤鎬佸叏灞€鍙橀噺閮藉湪 闈欐€佸瓨鍌ㄥ尯鍒嗛厤绌洪棿銆傚叏灞€鍙橀噺鏈韩灏辨槸闈欐€佸瓨鍌ㄦ柟寮忥紝闈欐€佸叏灞€鍙橀噺褰撶劧涔熸槸闈欐€佸瓨鍌ㄦ柟寮忋€?

2. 浣滅敤鍩?

锛?锛夊叏灞€鍙橀噺

鍏ㄥ眬鍙橀噺鍏锋湁鍏ㄥ眬浣滅敤鍩熸枃浠朵綔鐢ㄥ煙锛堟枃浠朵腑鐨勫叏灞€锛夈€傚叏灞€鍙橀噺鍙渶鍦ㄤ竴涓簮鏂囦欢涓畾涔夛紝灏卞彲浠ヤ綔鐢ㄤ簬鎵€鏈夌殑婧愭枃浠躲€?

鍏朵粬涓嶅寘鎷叏灞€鍙橀噺瀹氫箟鐨勬簮鏂囦欢闇€瑕佺敤extern鍏抽敭瀛楀啀娆″0鏄庤繖涓叏灞€鍙橀噺銆?

锛?锛夐潤鎬佸叏灞€鍙橀噺

闈欐€佸叏灞€鍙橀噺涔熷叿鏈夊叏灞€浣滅敤鍩燂紝浠栦笌鍏ㄥ眬鍙橀噺鐨勫尯鍒湪浜庡鏋滅▼搴忓寘鍚涓枃浠剁殑璇濓紝浠栦綔鐢ㄤ簬瀹氫箟瀹冪殑鏂囦欢閲岋紝涓嶈兘浣滅敤鍒板叾浠栨枃浠堕噷锛屽嵆琚玸tatic鍏抽敭瀛椾慨楗拌繃鐨勫彉閲忓叿鏈夋枃浠朵綔鐢ㄥ煙銆?

鍗充娇涓や釜涓嶅悓鐨勬簮鏂囦欢閮藉畾涔変簡鐩稿悓鐨勯潤鎬佸叏灞€鍙橀噺锛屼粬浠篃鏄笉鍚岀殑鍙橀噺銆?

涓夈€佹€讳綋鏉ヨ

闈為潤鎬佸叏灞€鍙橀噺鐨勪綔鐢ㄥ煙鏄暣涓簮绋嬪簭锛屽綋涓€涓簮绋嬪簭鐢卞涓簮鏂囦欢缁勬垚鏃讹紝闈為潤鎬佺殑鍏ㄥ眬鍙橀噺鍦ㄥ悇涓簮鏂囦欢涓兘鏄湁鏁堢殑銆?

闈欐€佸叏灞€鍙橀噺鍒欓檺鍒朵簡鍏朵綔鐢ㄥ煙锛屽嵆鍙湪瀹氫箟璇ュ彉閲忕殑婧愭枃浠跺唴鏈夋晥锛屽湪鍚屼竴婧愮▼搴忕殑鍏朵粬婧愭枃浠朵腑涓嶈兘浣跨敤瀹冦€傜敱浜庨潤鎬佸叏灞€鍙橀噺鐨勪綔鐢ㄥ煙灞€闄愪簬涓€涓簮鏂囦欢鍐咃紝鍙兘涓鸿婧愭枃浠跺唴鐨勫嚱鏁板叕鐢紝鍥犳鍙互閬垮厤鍦ㄥ叾浠栨簮鏂囦欢涓紩璧烽敊璇€?

灏卞瓨鍌ㄥ尯鍩熸潵璇存槸娌℃湁鍖哄埆鐨勩€?

//-----------------------------------------
C++鐨剆tatic鏈変袱绉嶇敤娉曪細闈㈠悜杩囩▼绋嬪簭璁捐涓殑static鍜岄潰鍚戝璞$▼搴忚璁′腑鐨剆tatic銆傚墠鑰呭簲鐢ㄤ簬鏅€氬彉閲忓拰鍑芥暟锛屼笉娑夊強绫伙紱鍚庤€呬富瑕佽鏄巗tatic鍦ㄧ被涓殑浣滅敤銆?

涓€銆侀潰鍚戣繃绋嬭璁′腑鐨剆tatic

1銆侀潤鎬佸叏灞€鍙橀噺

鍦ㄥ叏灞€鍙橀噺鍓嶏紝鍔犱笂鍏抽敭瀛梥tatic锛岃鍙橀噺灏辫瀹氫箟鎴愪负涓€涓潤鎬佸叏灞€鍙橀噺銆傛垜浠厛涓句竴涓潤鎬佸叏灞€鍙橀噺鐨勪緥瀛愶紝濡備笅锛?

//Example 1
#include <iostream.h>
void fn();
static int n; //瀹氫箟闈欐€佸叏灞€鍙橀噺
void main()
{
n=20;
cout<<n<<endl;
fn();
}

void fn()
{
n++;
cout<<n<<endl;
}

闈欐€佸叏灞€鍙橀噺鏈変互涓嬬壒鐐癸細
璇ュ彉閲忓湪鍏ㄥ眬鏁版嵁鍖哄垎閰嶅唴瀛橈紱
鏈粡鍒濆鍖栫殑闈欐€佸叏灞€鍙橀噺浼氳绋嬪簭鑷姩鍒濆鍖栦负0锛堣嚜鍔ㄥ彉閲忕殑鍊兼槸闅忔満鐨勶紝闄ら潪瀹冭鏄惧紡鍒濆鍖栵級锛?
闈欐€佸叏灞€鍙橀噺鍦ㄥ0鏄庡畠鐨勬暣涓枃浠堕兘鏄彲瑙佺殑锛岃€屽湪鏂囦欢涔嬪鏄笉鍙鐨勶紱銆€
闈欐€佸彉閲忛兘鍦ㄥ叏灞€鏁版嵁鍖哄垎閰嶅唴瀛橈紝鍖呮嫭鍚庨潰灏嗚鎻愬埌鐨勯潤鎬佸眬閮ㄥ彉閲忋€傚浜庝竴涓畬鏁寸殑绋嬪簭锛屽湪鍐呭瓨涓殑鍒嗗竷鎯呭喌濡備笅鍑犱釜鍖猴細

浠g爜鍖?
鍏ㄥ眬鏁版嵁鍖?
鍫嗗尯
鏍堝尯

涓€鑸▼搴忕殑鐢眓ew浜х敓鐨勫姩鎬佹暟鎹瓨鏀惧湪鍫嗗尯锛屽嚱鏁板唴閮ㄧ殑鑷姩鍙橀噺瀛樻斁鍦ㄦ爤鍖恒€傝嚜鍔ㄥ彉閲忎竴鑸細闅忕潃鍑芥暟鐨勯€€鍑鸿€岄噴鏀剧┖闂达紝闈欐€佹暟鎹紙鍗充娇鏄嚱鏁板唴閮ㄧ殑闈欐€佸眬閮ㄥ彉閲忥級涔熷瓨鏀惧湪鍏ㄥ眬鏁版嵁鍖恒€傚叏灞€鏁版嵁鍖虹殑鏁版嵁骞朵笉浼氬洜涓哄嚱鏁扮殑閫€鍑鸿€岄噴鏀剧┖闂淬€傜粏蹇冪殑璇昏€呭彲鑳戒細鍙戠幇锛孍xample 1涓殑浠g爜涓皢

static int n; //瀹氫箟闈欐€佸叏灞€鍙橀噺
鏀逛负 int n; //瀹氫箟鍏ㄥ眬鍙橀噺
绋嬪簭鐓ф牱姝e父杩愯銆?
鐨勭‘锛屽畾涔夊叏灞€鍙橀噺灏卞彲浠ュ疄鐜板彉閲忓湪鏂囦欢涓殑鍏变韩锛屼絾瀹氫箟闈欐€佸叏灞€鍙橀噺杩樻湁浠ヤ笅濂藉锛?
闈欐€佸叏灞€鍙橀噺涓嶈兘琚叾瀹冩枃浠舵墍鐢紱
鍏跺畠鏂囦欢涓彲浠ュ畾涔夌浉鍚屽悕瀛楃殑鍙橀噺锛屼笉浼氬彂鐢熷啿绐侊紱
鎮ㄥ彲浠ュ皢涓婅堪绀轰緥浠g爜鏀逛负濡備笅锛?


//Example 2
//File1
#include <iostream.h>
void fn();
static int n; //瀹氫箟闈欐€佸叏灞€鍙橀噺
void main()
{
n=20;
cout<<n<<endl;
fn();
}

//File2
#include <iostream.h>
extern int n;
void fn()
{
n++;
cout<<n<<endl;
}

缂栬瘧骞惰繍琛孍xample 2锛屾偍灏变細鍙戠幇涓婅堪浠g爜鍙互鍒嗗埆閫氳繃缂栬瘧锛屼絾杩愯鏃跺嚭鐜伴敊璇€傝瘯鐫€灏?static int n; //瀹氫箟闈欐€佸叏灞€鍙橀噺

鏀逛负 int n; //瀹氫箟鍏ㄥ眬鍙橀噺

鍐嶆缂栬瘧杩愯绋嬪簭锛岀粏蹇冧綋浼氬叏灞€鍙橀噺鍜岄潤鎬佸叏灞€鍙橀噺鐨勫尯鍒€?

2銆侀潤鎬佸眬閮ㄥ彉閲?

鍦ㄥ眬閮ㄥ彉閲忓墠锛屽姞涓婂叧閿瓧static锛岃鍙橀噺灏辫瀹氫箟鎴愪负涓€涓潤鎬佸眬閮ㄥ彉閲忋€?

鎴戜滑鍏堜妇涓€涓潤鎬佸眬閮ㄥ彉閲忕殑渚嬪瓙锛屽涓嬶細

//Example 3
#include <iostream.h>
void fn();
void main()
{
fn();
fn();
fn();
}
void fn()
{
static n=10;
cout<<n<<endl;
n++;
}

閫氬父锛屽湪鍑芥暟浣撳唴瀹氫箟浜嗕竴涓彉閲忥紝姣忓綋绋嬪簭杩愯鍒拌璇彞鏃堕兘浼氱粰璇ュ眬閮ㄥ彉閲忓垎閰嶆爤鍐呭瓨銆備絾闅忕潃绋嬪簭閫€鍑哄嚱鏁颁綋锛岀郴缁熷氨浼氭敹鍥炴爤鍐呭瓨锛屽眬閮ㄥ彉閲忎篃鐩稿簲澶辨晥銆?
浣嗘湁鏃跺€欐垜浠渶瑕佸湪涓ゆ璋冪敤涔嬮棿瀵瑰彉閲忕殑鍊艰繘琛屼繚瀛樸€傞€氬父鐨勬兂娉曟槸瀹氫箟涓€涓叏灞€鍙橀噺鏉ュ疄鐜般€備絾杩欐牱涓€鏉ワ紝鍙橀噺宸茬粡涓嶅啀灞炰簬鍑芥暟鏈韩浜嗭紝涓嶅啀浠呭彈鍑芥暟鐨勬帶鍒讹紝缁欑▼搴忕殑缁存姢甯︽潵涓嶄究銆?
闈欐€佸眬閮ㄥ彉閲忔濂藉彲浠ヨВ鍐宠繖涓棶棰樸€傞潤鎬佸眬閮ㄥ彉閲忎繚瀛樺湪鍏ㄥ眬鏁版嵁鍖猴紝鑰屼笉鏄繚瀛樺湪鏍堜腑锛屾瘡娆$殑鍊间繚鎸佸埌涓嬩竴娆¤皟鐢紝鐩村埌涓嬫璧嬫柊鍊笺€?

闈欐€佸眬閮ㄥ彉閲忔湁浠ヤ笅鐗圭偣锛?

璇ュ彉閲忓湪鍏ㄥ眬鏁版嵁鍖哄垎閰嶅唴瀛橈紱
闈欐€佸眬閮ㄥ彉閲忓湪绋嬪簭鎵ц鍒拌瀵硅薄鐨勫0鏄庡鏃惰棣栨鍒濆鍖栵紝鍗充互鍚庣殑鍑芥暟璋冪敤涓嶅啀杩涜鍒濆鍖栵紱
闈欐€佸眬閮ㄥ彉閲忎竴鑸湪澹版槑澶勫垵濮嬪寲锛屽鏋滄病鏈夋樉寮忓垵濮嬪寲锛屼細琚▼搴忚嚜鍔ㄥ垵濮嬪寲涓?锛?
瀹冨缁堥┗鐣欏湪鍏ㄥ眬鏁版嵁鍖猴紝鐩村埌绋嬪簭杩愯缁撴潫銆備絾鍏朵綔鐢ㄥ煙涓哄眬閮ㄤ綔鐢ㄥ煙锛屽綋瀹氫箟瀹冪殑鍑芥暟鎴栬鍙ュ潡缁撴潫鏃讹紝鍏朵綔鐢ㄥ煙闅忎箣缁撴潫锛?

//娉細鍙︿竴涓灞€閮ㄥ彉閲忕殑鐞嗚В
瀵归潤鎬佸眬閮ㄥ彉閲忕殑璇存槑锛?
(1) 闈欐€佸眬閮ㄥ彉閲忓湪闈欐€佸瓨鍌ㄥ尯鍐呭垎閰嶅瓨鍌ㄥ崟鍏冦€傚湪绋嬪簭鏁翠釜杩愯鏈熼棿閮戒笉閲婃斁銆傝€岃嚜鍔ㄥ彉閲忥紙鍗冲姩鎬佸眬閮ㄥ彉閲忥級灞炰簬鍔ㄦ€佸瓨鍌ㄧ被鍒紝瀛樺偍鍦ㄥ姩鎬佸瓨鍌ㄥ尯绌洪棿(鑰屼笉鏄潤鎬佸瓨鍌ㄥ尯绌洪棿)锛屽嚱鏁拌皟鐢ㄧ粨鏉熷悗鍗抽噴鏀俱€?
(2) 涓洪潤鎬佸眬閮ㄥ彉閲忚祴鍒濆€兼槸鍦ㄧ紪璇戞椂杩涜鍊肩殑锛屽嵆鍙祴鍒濆€间竴娆★紝鍦ㄧ▼搴忚繍琛屾椂瀹冨凡鏈夊垵鍊笺€備互鍚庢瘡娆¤皟鐢ㄥ嚱鏁版椂涓嶅啀閲嶆柊璧嬪垵鍊艰€屽彧鏄繚鐣欎笂娆″嚱鏁拌皟鐢ㄧ粨鏉熸椂鐨勫€笺€傝€屼负鑷姩鍙橀噺璧嬪垵鍊硷紝涓嶆槸鍦ㄧ紪璇戞椂杩涜鐨勶紝鑰屾槸鍦ㄥ嚱鏁拌皟鐢ㄦ椂杩涜锛屾瘡璋冪敤涓€娆″嚱鏁伴噸鏂扮粰涓€娆″垵鍊硷紝鐩稿綋浜庢墽琛屼竴娆¤祴鍊艰鍙ャ€?

(3) 濡傛灉鍦ㄥ畾涔夊眬閮ㄥ彉閲忔椂涓嶈祴鍒濆€肩殑璇濓紝瀵归潤鎬佸眬閮ㄥ彉閲忔潵璇达紝缂栬瘧鏃惰嚜鍔ㄨ祴鍒濆€?(瀵规暟鍊煎瀷鍙橀噺)鎴栫┖瀛楃(瀵瑰瓧绗﹀瀷鍙橀噺)銆傝€屽鑷姩鍙橀噺鏉ヨ锛屽鏋滀笉璧嬪垵鍊硷紝鍒欏畠鐨勫€兼槸涓€涓笉纭畾鐨勫€笺€傝繖鏄敱浜庢瘡娆″嚱鏁拌皟鐢ㄧ粨鏉熷悗瀛樺偍鍗曞厓宸查噴鏀撅紝涓嬫璋冪敤鏃跺張閲嶆柊鍙﹀垎閰嶅瓨鍌ㄥ崟鍏冿紝鑰屾墍鍒嗛厤鐨勫崟鍏冧腑鐨勫€兼槸涓嶇‘瀹氱殑銆?
(4) 铏界劧闈欐€佸眬閮ㄥ彉閲忓湪鍑芥暟璋冪敤缁撴潫鍚庝粛鐒跺瓨鍦紝浣嗗叾浠栧嚱鏁版槸涓嶈兘寮曠敤瀹冪殑锛屼篃灏辨槸璇达紝鍦ㄥ叾浠栧嚱鏁颁腑瀹冩槸鈥滀笉鍙鈥濈殑銆?
eg锛?
#include <iostream>
using namespace std;
int f(int a)                          //瀹氫箟f鍑芥暟锛宎涓哄舰鍙?
{auto int b=0;                      //瀹氫箟b涓鸿嚜鍔ㄥ彉閲?
static int c=3;                     //瀹氫箟c涓洪潤鎬佸眬閮ㄥ彉閲?
b=b+1;
c=c+1;
return a+b+c;
}

int main( )
{int a=2,i;
for(i=0;i<3;i++)
    cout<<f(a)<<鈥?鈥?
cout<<endl;
return 0;
}

杩愯缁撴灉涓?
7 8 9

3銆侀潤鎬佸嚱鏁?

鍦ㄥ嚱鏁扮殑杩斿洖绫诲瀷鍓嶅姞涓妔tatic鍏抽敭瀛?鍑芥暟鍗宠瀹氫箟涓洪潤鎬佸嚱鏁般€傞潤鎬佸嚱鏁颁笌鏅€氬嚱鏁颁笉鍚岋紝瀹冨彧鑳藉湪澹版槑瀹冪殑鏂囦欢褰撲腑鍙锛屼笉鑳借鍏跺畠鏂囦欢浣跨敤銆?

闈欐€佸嚱鏁扮殑渚嬪瓙锛?

//Example 4
#include <iostream.h>
static void fn();//澹版槑闈欐€佸嚱鏁?
void main()
{
fn();
}
void fn()//瀹氫箟闈欐€佸嚱鏁?
{
int n=10;
cout<<n<<endl;
}

瀹氫箟闈欐€佸嚱鏁扮殑濂藉锛?
闈欐€佸嚱鏁颁笉鑳借鍏跺畠鏂囦欢鎵€鐢紱
鍏跺畠鏂囦欢涓彲浠ュ畾涔夌浉鍚屽悕瀛楃殑鍑芥暟锛屼笉浼氬彂鐢熷啿绐侊紱


   
浜屻€侀潰鍚戝璞$殑static鍏抽敭瀛楋紙绫讳腑鐨剆tatic鍏抽敭瀛楋級

1銆侀潤鎬佹暟鎹垚鍛?

鍦ㄧ被鍐呮暟鎹垚鍛樼殑澹版槑鍓嶅姞涓婂叧閿瓧static锛岃鏁版嵁鎴愬憳灏辨槸绫诲唴鐨勯潤鎬佹暟鎹垚鍛樸€傚厛涓句竴涓潤鎬佹暟鎹垚鍛樼殑渚嬪瓙銆?

//Example 5
#include <iostream.h>
class Myclass
{
public:
Myclass(int a,int b,int c);
void GetSum();
private:
int a,b,c;
static int Sum;//澹版槑闈欐€佹暟鎹垚鍛?
};


int Myclass::Sum=0;//瀹氫箟骞跺垵濮嬪寲闈欐€佹暟鎹垚鍛?

Myclass::Myclass(int a,int b,int c)
{
this->a=a;
this->b=b;
this->c=c;
Sum+=a+b+c;
}

void Myclass::GetSum()
{
cout<<"Sum="<<Sum<<endl;
}

void main()
{
Myclass M(1,2,3);
M.GetSum();
Myclass N(4,5,6);
N.GetSum();
M.GetSum();

}

鍙互鐪嬪嚭锛岄潤鎬佹暟鎹垚鍛樻湁浠ヤ笅鐗圭偣锛?

瀵逛簬闈為潤鎬佹暟鎹垚鍛橈紝姣忎釜绫诲璞¢兘鏈夎嚜宸辩殑鎷疯礉銆傝€岄潤鎬佹暟鎹垚鍛樿褰撲綔鏄被鐨勬垚鍛樸€傛棤璁鸿繖涓被鐨勫璞¤瀹氫箟浜嗗灏戜釜锛岄潤鎬佹暟鎹垚鍛樺湪绋嬪簭涓篃鍙湁涓€浠芥嫹璐濓紝鐢辫绫诲瀷鐨勬墍鏈夊璞″叡浜闂€備篃灏辨槸璇达紝闈欐€佹暟鎹垚鍛樻槸璇ョ被鐨勬墍鏈夊璞℃墍鍏辨湁鐨勩€傚璇ョ被鐨勫涓璞℃潵璇达紝闈欐€佹暟鎹垚鍛樺彧鍒嗛厤涓€娆″唴瀛橈紝渚涙墍鏈夊璞″叡鐢ㄣ€傛墍浠ワ紝闈欐€佹暟鎹垚鍛樼殑鍊煎姣忎釜瀵硅薄閮芥槸涓€鏍风殑锛屽畠鐨勫€煎彲浠ユ洿鏂帮紱
闈欐€佹暟鎹垚鍛樺瓨鍌ㄥ湪鍏ㄥ眬鏁版嵁鍖恒€傞潤鎬佹暟鎹垚鍛樺畾涔夋椂瑕佸垎閰嶇┖闂达紝鎵€浠ヤ笉鑳藉湪绫诲0鏄庝腑瀹氫箟銆傚湪Example 5涓紝璇彞int Myclass::Sum=0;鏄畾涔夐潤鎬佹暟鎹垚鍛橈紱

闈欐€佹暟鎹垚鍛樺拰鏅€氭暟鎹垚鍛樹竴鏍烽伒浠巔ublic,protected,private璁块棶瑙勫垯锛?

鍥犱负闈欐€佹暟鎹垚鍛樺湪鍏ㄥ眬鏁版嵁鍖哄垎閰嶅唴瀛橈紝灞炰簬鏈被鐨勬墍鏈夊璞″叡浜紝鎵€浠ワ紝瀹冧笉灞炰簬鐗瑰畾鐨勭被瀵硅薄锛屽湪娌℃湁浜х敓绫诲璞℃椂鍏朵綔鐢ㄥ煙灏卞彲瑙侊紝鍗冲湪娌℃湁浜х敓绫荤殑瀹炰緥鏃讹紝鎴戜滑灏卞彲浠ユ搷浣滃畠锛?
闈欐€佹暟鎹垚鍛樺垵濮嬪寲涓庝竴鑸暟鎹垚鍛樺垵濮嬪寲涓嶅悓銆傞潤鎬佹暟鎹垚鍛樺垵濮嬪寲鐨勬牸寮忎负锛?
锛滄暟鎹被鍨嬶紴锛滅被鍚嶏紴::锛滈潤鎬佹暟鎹垚鍛樺悕锛?锛滃€硷紴
绫荤殑闈欐€佹暟鎹垚鍛樻湁涓ょ璁块棶褰㈠紡锛?
锛滅被瀵硅薄鍚嶏紴.锛滈潤鎬佹暟鎹垚鍛樺悕锛?鎴?锛滅被绫诲瀷鍚嶏紴::锛滈潤鎬佹暟鎹垚鍛樺悕锛?
濡傛灉闈欐€佹暟鎹垚鍛樼殑璁块棶鏉冮檺鍏佽鐨勮瘽锛堝嵆public鐨勬垚鍛橈級锛屽彲鍦ㄧ▼搴忎腑锛屾寜涓婅堪鏍煎紡鏉ュ紩鐢ㄩ潤鎬佹暟鎹垚鍛?锛?
闈欐€佹暟鎹垚鍛樹富瑕佺敤鍦ㄥ悇涓璞¢兘鏈夌浉鍚岀殑鏌愰」灞炴€х殑鏃跺€欍€傛瘮濡傚浜庝竴涓瓨娆剧被锛屾瘡涓疄渚嬬殑鍒╂伅閮芥槸鐩稿悓鐨勩€傛墍浠ワ紝搴旇鎶婂埄鎭涓哄瓨娆剧被鐨勯潤鎬佹暟鎹垚鍛樸€傝繖鏈変袱涓ソ澶勶紝绗竴锛屼笉绠″畾涔夊灏戜釜瀛樻绫诲璞★紝鍒╂伅鏁版嵁鎴愬憳閮藉叡浜垎閰嶅湪鍏ㄥ眬鏁版嵁鍖虹殑鍐呭瓨锛屾墍浠ヨ妭鐪佸瓨鍌ㄧ┖闂淬€傜浜岋紝涓€鏃﹀埄鎭渶瑕佹敼鍙樻椂锛屽彧瑕佹敼鍙樹竴娆★紝鍒欐墍鏈夊瓨娆剧被瀵硅薄鐨勫埄鎭叏鏀瑰彉杩囨潵浜嗭紱
鍚屽叏灞€鍙橀噺鐩告瘮锛屼娇鐢ㄩ潤鎬佹暟鎹垚鍛樻湁涓や釜浼樺娍锛?
闈欐€佹暟鎹垚鍛樻病鏈夎繘鍏ョ▼搴忕殑鍏ㄥ眬鍚嶅瓧绌洪棿锛屽洜姝や笉瀛樺湪涓庣▼搴忎腑鍏跺畠鍏ㄥ眬鍚嶅瓧鍐茬獊鐨勫彲鑳芥€э紱
鍙互瀹炵幇淇℃伅闅愯棌銆傞潤鎬佹暟鎹垚鍛樺彲浠ユ槸private鎴愬憳锛岃€屽叏灞€鍙橀噺涓嶈兘锛?

2銆侀潤鎬佹垚鍛樺嚱鏁?
涓庨潤鎬佹暟鎹垚鍛樹竴鏍凤紝鎴戜滑涔熷彲浠ュ垱寤轰竴涓潤鎬佹垚鍛樺嚱鏁帮紝瀹冧负绫荤殑鍏ㄩ儴鏈嶅姟鑰屼笉鏄负鏌愪竴涓被鐨勫叿浣撳璞℃湇鍔°€傞潤鎬佹垚鍛樺嚱鏁颁笌闈欐€佹暟鎹垚鍛樹竴鏍凤紝閮芥槸绫荤殑鍐呴儴瀹炵幇锛屽睘浜庣被瀹氫箟鐨勪竴閮ㄥ垎銆傛櫘閫氱殑鎴愬憳鍑芥暟涓€鑸兘闅愬惈浜嗕竴涓猼his鎸囬拡锛宼his鎸囬拡鎸囧悜绫荤殑瀵硅薄鏈韩锛屽洜涓烘櫘閫氭垚鍛樺嚱鏁版€绘槸鍏蜂綋鐨勫睘浜庢煇涓被鐨勫叿浣撳璞$殑銆傞€氬父鎯呭喌涓嬶紝this鏄己鐪佺殑銆傚鍑芥暟fn()瀹為檯涓婃槸this->fn()銆備絾鏄笌鏅€氬嚱鏁扮浉姣旓紝闈欐€佹垚鍛樺嚱鏁扮敱浜庝笉鏄笌浠讳綍鐨勫璞$浉鑱旂郴锛屽洜姝ゅ畠涓嶅叿鏈塼his鎸囬拡銆備粠杩欎釜鎰忎箟涓婅锛屽畠鏃犳硶璁块棶灞炰簬绫诲璞$殑闈為潤鎬佹暟鎹垚鍛橈紝涔熸棤娉曡闂潪闈欐€佹垚鍛樺嚱鏁帮紝瀹冨彧鑳借皟鐢ㄥ叾浣欑殑闈欐€佹垚鍛樺嚱鏁般€備笅闈妇涓潤鎬佹垚鍛樺嚱鏁扮殑渚嬪瓙銆?

//Example 6
#include <iostream.h>
class Myclass
{
public:
Myclass(int a,int b,int c);
static void GetSum();/澹版槑闈欐€佹垚鍛樺嚱鏁?
private:
int a,b,c;
static int Sum;//澹版槑闈欐€佹暟鎹垚鍛?
};
int Myclass::Sum=0;//瀹氫箟骞跺垵濮嬪寲闈欐€佹暟鎹垚鍛?

Myclass::Myclass(int a,int b,int c)
{
this->a=a;
this->b=b;
this->c=c;
Sum+=a+b+c; //闈為潤鎬佹垚鍛樺嚱鏁板彲浠ヨ闂潤鎬佹暟鎹垚鍛?
}

void Myclass::GetSum() //闈欐€佹垚鍛樺嚱鏁扮殑瀹炵幇
{
// cout<<a<<endl; //閿欒浠g爜锛宎鏄潪闈欐€佹暟鎹垚鍛?
cout<<"Sum="<<Sum<<endl;
}

void main()
{
Myclass M(1,2,3);
M.GetSum();
Myclass N(4,5,6);
N.GetSum();
Myclass::GetSum();
}



鍏充簬闈欐€佹垚鍛樺嚱鏁帮紝鍙互鎬荤粨涓轰互涓嬪嚑鐐癸細

鍑虹幇鍦ㄧ被浣撳鐨勫嚱鏁板畾涔変笉鑳芥寚瀹氬叧閿瓧static锛?
闈欐€佹垚鍛樹箣闂村彲浠ョ浉浜掕闂紝鍖呮嫭闈欐€佹垚鍛樺嚱鏁拌闂潤鎬佹暟鎹垚鍛樺拰璁块棶闈欐€佹垚鍛樺嚱鏁帮紱
闈為潤鎬佹垚鍛樺嚱鏁板彲浠ヤ换鎰忓湴璁块棶闈欐€佹垚鍛樺嚱鏁板拰闈欐€佹暟鎹垚鍛橈紱
闈欐€佹垚鍛樺嚱鏁颁笉鑳借闂潪闈欐€佹垚鍛樺嚱鏁板拰闈為潤鎬佹暟鎹垚鍛橈紱
鐢变簬娌℃湁this鎸囬拡鐨勯澶栧紑閿€锛屽洜姝ら潤鎬佹垚鍛樺嚱鏁颁笌绫荤殑鍏ㄥ眬鍑芥暟鐩告瘮閫熷害涓婁細鏈夊皯璁哥殑澧為暱锛?
璋冪敤闈欐€佹垚鍛樺嚱鏁帮紝鍙互鐢ㄦ垚鍛樿闂搷浣滅(.)鍜?->)涓轰竴涓被鐨勫璞℃垨鎸囧悜绫诲璞$殑鎸囬拡璋冪敤闈欐€佹垚鍛樺嚱鏁帮紝涔熷彲浠ョ洿鎺ヤ娇鐢ㄥ涓嬫牸寮忥細
锛滅被鍚嶏紴::锛滈潤鎬佹垚鍛樺嚱鏁板悕锛烇紙锛滃弬鏁拌〃锛烇級
璋冪敤绫荤殑闈欐€佹垚鍛樺嚱鏁般€?

//-----------------------------------------
1.濡傛灉澹版槑涓€涓叏灞€鍙橀噺涓簊tatic锛岄偅涔堣〃鏄庤繖涓叏灞€鍙橀噺鍙兘鐢ㄥ湪鏈ā鍧楀唴锛屽叾浠栨ā鍧椾笉鑳借闂€傚洜姝わ紝涓庡叾鐩稿鐨勫弽涔夎瘝灏辨槸extern銆?nbsp;
2.濡傛灉澹版槑涓€涓潪绫绘垚鍛樺嚱鏁颁负static锛岄偅涔堣〃鏄庤繖涓嚱鏁颁笉瀵煎嚭绗﹀彿锛屽洜姝ゅ彧鑳戒緵鏈ā鍧椾娇鐢紝鍏朵粬妯″潡涓嶈兘璁块棶锛岃繖鍏跺疄鍦–璇█灞傛涓彁渚涘皝瑁呯殑姒傚康浜?

//-----------------------------------------
杩愯涓€涓嬩笅闈㈢殑绋嬪簭浣犲氨鐭ラ亾static鐨勪竴涓敤澶勪簡锛?nbsp;
  
  #include<stdio.h> 
  
  void   f() 
  { 
          static   int   n   =   0; 
          printf(   "%d   ",   n   ); 
          n++; 
  } 
  
  void   g() 
  { 
          int   n   =   0; 
          printf(   "%d   ",   n   ); 
          n++; 
  } 
  
  void   main(void) 
  { 
          int   n; 
          for(   n   =   0;   n   <   10;   n++   ) 
          { 
                  f(); 
          } 
          printf(   "\n"   ); 
  
          for(   n   =   0;   n   <   10;   n++   ) 
          { 
                  g(); 
          } 
          printf(   "\n"   ); 
  }