static 用法總結

1. 用於函數內部修飾變量,即函數內的靜態變量。這種變量的生存期長於該函數,使得函數具有一定的“狀態”。使用靜態變量的函數一般是不可重入的,也不是線程安全的,比如strtok(3)。
2. 用在文件級別(函數體之外),修飾變量或函數,表示該變量或函數只在本文件可見,其他文件看不到也訪問不到該變量或函數。專業的說法叫“具有internal linkage”(簡言之:不暴露給別的translation unit)。
C語言的這兩種用法很明確,一般也不容易混淆。


由於C++引入了類,在保持與C語言兼容的同時,static關鍵字又有了兩種新用法:
3.用於修飾類的數據成員,即所謂“靜態成員”。這種數據成員的生存期大於class的對象(實例/instance)。靜態數據成員是每個class有一份,普通數據成員是每個instance 有一份。
4. 用於修飾class的成員函數,即所謂“靜態成員函數”。這種成員函數只能訪問靜態成員和其他靜態成員函數,不能訪問非靜態成員和非靜態成員函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章