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