背景:
每個(gè)類的對(duì)象可以是很多,當(dāng)需要某個(gè)數(shù)據(jù)在類的所有對(duì)象中共享時(shí),則需要用靜態(tài)成員。其聲明用static,可分為靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函
數(shù),簡(jiǎn)言之,即數(shù)據(jù)和函數(shù)。它又可分為公共靜態(tài)數(shù)據(jù)成員和保護(hù)、私有靜態(tài)數(shù)據(jù)成員。保護(hù)和私有靜態(tài)數(shù)據(jù)成員只能被類的內(nèi)部訪問(wèn),訪問(wèn)時(shí)
一般的用法是: 類名::靜態(tài)數(shù)據(jù)成員名
應(yīng)用:
靜態(tài)成員在類中不會(huì)隨著對(duì)象的產(chǎn)生而分配空間,也不會(huì)隨對(duì)象的消失而回收空間。所以它的空間分配不在類里的構(gòu)造函數(shù)和析構(gòu)函數(shù)中完
成。靜態(tài)數(shù)據(jù)成員的使用遵循變量的規(guī)則,只是它的范圍在某個(gè)類的范圍內(nèi)。靜態(tài)成員函數(shù)可以有參數(shù),可以有返回值。
我們知道類的聲明和定義是不占用空間的,其對(duì)象才會(huì)占用空間。而類的靜態(tài)成員是在程序運(yùn)行時(shí)就會(huì)存在,會(huì)占用空間。因而靜態(tài)成員的聲
明在類中,定義和初始化卻不能在類中。它的空間分配可以存在三個(gè)地方:1.作為類定義的內(nèi)部實(shí)現(xiàn),那里有類的成員函數(shù)定義;2.作為類的外部
接口的頭文件,那里有類的聲明;3.在應(yīng)用程序的main()函數(shù)前的全局?jǐn)?shù)據(jù)聲明和定義處。
常用的場(chǎng)合:
A:用來(lái)保存流動(dòng)變化的對(duì)象個(gè)數(shù)。
B:作為一個(gè)標(biāo)志,指示一個(gè)特定的動(dòng)作是否發(fā)生(如:創(chuàng)建幾個(gè)對(duì)象,每個(gè)對(duì)象要對(duì)同一個(gè)磁盤(pán)文件進(jìn)行讀寫(xiě),但同時(shí)顯然只能允許一個(gè)對(duì)象進(jìn)行寫(xiě)文件,在這種情況下,用戶希望說(shuō)明一個(gè)靜態(tài)數(shù)據(jù)成員指出文件何時(shí)正在使用,何時(shí)處于空閑)。
C:一個(gè)指向一個(gè)鏈表第一個(gè)成員或最后一個(gè)成員的指針。