這篇介紹了靜態(tài)成員函數(shù)與靜態(tài)成員變量,是我的讀書筆記,我希望它夠簡短但又比較全面,起到復(fù)習(xí)的作用。如果有一些C++知識記不清楚了,它可以幫你很快回憶起來。
復(fù)習(xí)C語言的static關(guān)鍵字
(1)加在局部變量的前面使之成為靜態(tài)局部變量,作用域還是在函數(shù)內(nèi)部,可是生存周期延長了。
(2)加在全局變量的前面限定該變量作用域?yàn)槲募饔糜?,就是說即使其他文件使用了extern擴(kuò)展作用域也不行。這在C語言的多人項(xiàng)目中非常有用,避免了變量的重名。然而在C++中這一功能已經(jīng)被命名空間取代,但是為了保持和C語言的兼容,static還是有這樣的功能。
(3)加在函數(shù)定義或聲明的前面,限定函數(shù)作用域到文件作用域,也是為了避免多個(gè)文件中有重名函數(shù)。
當(dāng)static關(guān)鍵字出現(xiàn)在類中
當(dāng)static出現(xiàn)在類的定義中便出現(xiàn)了靜態(tài)成員變量和靜態(tài)成員函數(shù)。靜態(tài)成員是屬于類的,而不是屬于某個(gè)對象的。即便沒有任何一個(gè)實(shí)例,類的靜態(tài)成員變量也已經(jīng)存在了,而且還可能通過“類名::成員名”進(jìn)行訪問。類的靜態(tài)成員函數(shù)也可以用相同的方式調(diào)用,在類產(chǎn)生實(shí)例之前就調(diào)用成員方法,典型應(yīng)用是實(shí)現(xiàn)單例模式。
(1)靜態(tài)成員變量
靜態(tài)成員變量本質(zhì)上是全局變量,但是將和某些類關(guān)系緊密的全局變量寫到類里面,形式上成為一個(gè)整體,更容易理解和維護(hù)。所以盡量使用靜態(tài)成員變量吧,減少全局變量的使用。普通成員變量每個(gè)對象都有各自的一份,但是靜態(tài)成員變量一共只有一份,被所有的本類對象共享。如果使用sizeof運(yùn)算符計(jì)算對象的大小,得到的結(jié)果是不包含靜態(tài)成員變量在內(nèi)的。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26