資源描述:
《c第十四章靜態(tài)成員與友元》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、C語(yǔ)言程序設(shè)計(jì)第十四章靜態(tài)成員與友元如果想讓類(lèi)的所有對(duì)象在類(lèi)的范圍內(nèi)共享某個(gè)數(shù)據(jù),聲明為static的類(lèi)成員便能在類(lèi)范圍中共享,稱(chēng)之為靜態(tài)成員。15.1靜態(tài)成員的使用成員有數(shù)據(jù)成員和成員函數(shù)之分,靜態(tài)成員也有靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)之分。靜態(tài)成員用static聲明。例如,下面的程序在類(lèi)中定義了一個(gè)靜態(tài)數(shù)據(jù)成員和一個(gè)靜態(tài)成員函數(shù),在它的構(gòu)造函數(shù)和析構(gòu)函數(shù)中對(duì)靜態(tài)數(shù)據(jù)成員進(jìn)行操作,在應(yīng)用程序中,調(diào)用了靜態(tài)成員函數(shù):#include#includeclassStudent
2、{public:Student(char*pName="noname"){cout<<"createonestudent";strcpy(name,pName);noOfStudents++;//靜態(tài)成員:每創(chuàng)建一個(gè)對(duì)象,學(xué)生人數(shù)增1cout<3、)//靜態(tài)成員函數(shù){returnnoOfStudents;}protected:staticintnoOfStudents;//若寫(xiě)成noOfStudents=0;則非法charname[40];};intStudent::noOfStudents=0;//靜態(tài)數(shù)據(jù)成員在類(lèi)外分配空間和初始化voidfn(){Students1;Students2;cout<4、()<5、態(tài)數(shù)據(jù)成員公共靜態(tài)數(shù)據(jù)成員可被類(lèi)的外部訪問(wèn),保護(hù)或私有靜態(tài)數(shù)據(jù)成員可被類(lèi)的內(nèi)部訪問(wèn)。例如,下面的代碼描述一個(gè)公共的靜態(tài)數(shù)據(jù)成員:classStudent{public:Student(){noOfStudents++;//…}staticintnoOfStudents;//公共靜態(tài)數(shù)據(jù)成員//…};voidfn(Student&s1,Student&s2){cout<6、s2.noOfStudents,更通常的用法是Student::noOfStudents(不能用Student.noOfStudents)。其意義是,靜態(tài)數(shù)據(jù)成員是屬于Student類(lèi)的,而不是屬于哪個(gè)特定對(duì)象的,它也不需要依賴(lài)某個(gè)特定對(duì)象的數(shù)據(jù)。靜態(tài)數(shù)據(jù)成員用得比較多的場(chǎng)合一般為:(1)用來(lái)保存流動(dòng)變化的對(duì)象個(gè)數(shù);(2)作為一個(gè)標(biāo)志,指示一個(gè)特定的動(dòng)作是否發(fā)生;(3)一個(gè)指向一個(gè)鏈表第一成員或最后一個(gè)成員的指針.例如,下面的程序描述一個(gè)學(xué)生類(lèi),該類(lèi)對(duì)象是一個(gè)個(gè)的學(xué)生,它們構(gòu)成一個(gè)單向鏈表:#include
7、ostream.h>#includeclassStudent{public:Student(char*pName);~Student();protected:staticStudent*pFirst;Student*pNext;charname[40];};Student*Student::pFirst=0;Student::Student(char*pName){strncpy(name,pName,sizeof(name));name[sizeof(name)-1]='