這篇介紹了靜態(tài)成員函數(shù)與靜態(tài)成員變量,是我的讀書筆記,我希望它夠簡短但又比較全面,起到復(fù)習(xí)的作用。如果有一些C++知識記不清楚了,它可以幫你很快回憶起來。
復(fù)習(xí)C語言的static關(guān)鍵字
(1)加在局部變量的前面使之成為靜態(tài)局部變量,作用域還是在函數(shù)內(nèi)部,可是生存周期延長了。
(2)加在全局變量的前面限定該變量作用域為文件作用域,就是說即使其他文件使用了extern擴(kuò)展作用域也不行。這在C語言的多人項目中非常有用,避免了變量的重名。然而在C++中這一功能已經(jīng)被命名空間取代,但是為了保持和C語言的兼容,static還是有這樣的功能。
(3)加在函數(shù)定義或聲明的前面,限定函數(shù)作用域到文件作用域,也是為了避免多個文件中有重名函數(shù)。
當(dāng)static關(guān)鍵字出現(xiàn)在類中
當(dāng)static出現(xiàn)在類的定義中便出現(xiàn)了靜態(tài)成員變量和靜態(tài)成員函數(shù)。靜態(tài)成員是屬于類的,而不是屬于某個對象的。即便沒有任何一個實例,類的靜態(tài)成員變量也已經(jīng)存在了,而且還可能通過“類名::成員名”進(jìn)行訪問。類的靜態(tài)成員函數(shù)也可以用相同的方式調(diào)用,在類產(chǎn)生實例之前就調(diào)用成員方法,典型應(yīng)用是實現(xiàn)單例模式。
(1)靜態(tài)成員變量
靜態(tài)成員變量本質(zhì)上是全局變量,但是將和某些類關(guān)系緊密的全局變量寫到類里面,形式上成為一個整體,更容易理解和維護(hù)。所以盡量使用靜態(tài)成員變量吧,減少全局變量的使用。普通成員變量每個對象都有各自的一份,但是靜態(tài)成員變量一共只有一份,被所有的本類對象共享。如果使用sizeof運算符計算對象的大小,得到的結(jié)果是不包含靜態(tài)成員變量在內(nèi)的。